iphone - 无法在单元测试中设置 NSMutableDictionary 中的值

标签 iphone objective-c cocoa unit-testing ios

我正在 GHUnit 测试框架中编写单元测试。我在我的应用程序委托(delegate)中定义了一个 NSMutableDictionarydetailsDict。

在我的应用程序委托(delegate)中,我设置了一些值并保存它。 它在应用程序中工作正常,但是当我尝试调用方法在单元测试中设置值时,我无法设置任何值并且字典仍为空。

在测试用例中,我分配了 init 我的 appDelegate。从此对象向一个方法发送消息,该方法设置了一些键,但当我检查其值时,它仍然为空。

关于单元测试有什么我不知道的或者我错过了什么......?

任何答案指针都将受到高度赞赏。

编辑:我明白了,我必须单独分配 initdetailsDic 变量 像这样

#ifdef UNIT_TESTING
    detailsDict = [[NSMutableDictionary alloc] init];
#endif

仍然对其他方法的其他答案持开放态度。

最佳答案

您无法分配和初始化变量。你可以分配和初始化一个对象,实际上你确实需要在某个地方分配和初始化这个 NSMutableDictionary 对象。

执行此操作的正确位置是同时为您的应用程序和每个测试用例运行的位置。应用程序委托(delegate)的 init 方法可能是一个不错的选择。

也就是说,我想说你的应用程序委托(delegate)根本不应该存在于你的单元测试中,因为你的单元测试不是应用程序。您应该将要测试的任何功能拆分为一个或多个单独的 Controller ,您可以从应用程序委托(delegate)和相关单元测试中创建和使用这些 Controller 。

关于iphone - 无法在单元测试中设置 NSMutableDictionary 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802997/

相关文章:

objective-c - 从 Cocoa 应用程序创建 ZIP 存档

ios - 为 iOS 重新签名 ipa

iphone - 如何捕获其他iPhone应用程序的屏幕截图?

iphone - 交易在完成交易后返回 : has been called on it

iphone - 如何在 iPhone 应用程序中与 Modbus 设备通信?

ios - [NSPlaceholderMutableString initWithString :]: nil argument exception coming after casting the UITextField

ios - 被发送到一个不符合 "com"属性的 KVC 的对象

objective-c - 在 Objective C 中使用 rangeOfString 访问特定字符串

objective-c - 指定初始化器应该只调用 'super' 上的指定初始化器

ios - 如何通过命令行参数设置 NSDictionary 用户默认值?