【发布时间】:2015-08-13 14:14:27
【问题描述】:
我正在尝试在我的 swift iOS 应用程序上开始单元测试,但遇到了完全的障碍。我似乎无法访问使用我的 appDelegate 的任何内容。
我的 appDelegate 有一个 UserController 对象,它存储和管理登录的用户及其各种数据。为了简化调用userController,我创建了一个NSObject 的自定义子类,我的所有模型类都是它的子类。里面有
let userController : UserController = (UIApplication.sharedApplication().delegate as! AppDelegate).userController
每当我尝试测试其中一个子类化模型时,此行都会导致 SIGABRT 异常。
无法将“MyProject.AppDelegate”类型的值转换为 'MyProjectionTests.AppDelegate'。
我曾尝试从测试目标中删除 AppDelegate,但这让我的 AppDelegate 未定义。我曾尝试将import MyProject 添加到测试文件的顶部,但这也不起作用。
我见过另外两种解决方案:
将应用程序委托功能设为私有 - 我真的很讨厌这样做 像这样的东西。如果我必须进行测试有什么意义 专门为测试更改我的代码。
实现一个测试应用委托并使用它——这又是什么意思 在测试我是否不测试项目中的内容。
谁有解决办法。在 RSpec 使用 Rails 变得如此简单之后,事实证明 Swift 中的单元测试完全令人头疼
【问题讨论】: