问题标签 [kiwi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 如何在 Kiwi 中存根方法块?
我想存根一个使用 Kiwi 将块作为参数的方法。这是带有代码的完整解释:
我有一个名为的类TestedClass
,它有一个testedMethod
依赖于NetworkClass
通过 AFNetworking 调用到服务器的类的方法,并通过块返回其响应。翻译成代码:
我如何使用 Kiwi 存根networkMethod
与块以进行单元测试testMethod
?
更新:找到如何在 Kiwi 中执行此操作,请参阅下面的答案。
ios - 使用 Kiwi 捕获静态方法调用的参数
此链接显示如何使用 Kiwi 捕获模拟对象的参数。
有没有办法捕获静态方法调用的参数?在我看来,这只适用于实例方法。
reactive-cocoa - ReactiveCocoa 的 Kiwi 测试产生 EXC_BAD_ACCESS
我正在尝试使用 Kiwi 框架测试 ReactiveCocoa 代码。
这是代码:
这是测试用例
每次我运行测试用例时,当它尝试添加观察者时,我在 RACKVOTrampoline 类中都有一个 EXC_BAD_ACCESS
有什么建议么?
生产代码可以很好地与 ReactiveCocoa 一起使用。
ios - 使用 Kiwi 测试 MagicalRecord 对象时,默认上下文为 nil
我有两个用 Kiwi 编写的规范,它们都调用这两种方法beforeAll
:
而[MagicalRecord cleanUp];
在afterAll
.
这些规格之一没有说Default Context is nil! Did you forget to initialize the Core Data Stack?
,但另一个没有。当我注释掉第一个规范时,第二个规范仍然失败。当我注释掉第二个规范时,第一个规范仍然通过,因此顺序似乎并不重要,或者它们正在并行运行并导致问题。
谁能阐明为什么会发生这种情况?这是失败的完整规范:
+ (NSManagedObjectContext *) MR_defaultContext
NSAssert 说它失败了Default Context is nil! Did you forget to initialize the Core Data Stack?
。
ios - 存根方法并将其返回值动态设置为输入参数
我想动态地将一个依赖于参数的值返回给一个模拟方法,概念上是这样的:
或者像使用 OCMock 一样访问块中的调用:
猕猴桃可以吗?
cocoa-touch - 使用 NSDateFormatter 避免脆弱的单元测试
测试 NSDateFormatter 方法的最佳实践是什么?例如,假设我有一个方法:
我有两种方法可以考虑使用 Kiwi 测试此方法:
1)在单元测试中创建相同的格式化程序:
2)明确写出预期的输出:
现在,对我来说,#1 似乎有点多余。我知道测试会通过,因为我实际上是在单元测试中复制该方法。
方法#2 是一个非首发,因为它非常脆弱。它完全依赖于您所期望的测试设备当前语言环境。
所以我的问题是:是否有更合适的方法来测试这种方法,或者我应该继续使用测试方法#1。
ios - Objective-C 单元测试私有 UIViewController 接口
我有一个 UIViewController,我一直在尝试对它进行单元测试。我有一些私有变量和方法。我希望他们保持私密。问题是,我真的应该测试私有接口吗?只要它从“外部”的角度做它应该做的事情,它在内部的表现是否重要?
如果我开始测试私有接口,测试会难以理解/维护/修改吗?当涉及到更改内部实现的难易程度时,这会是一个重要的限制因素吗?头文件中没有提到私有方法/属性,因此,如果其他人出现,该人将不得不进入私有接口。
另外,我应该测试 UIViewController 和 UIView 之间的交互吗?
ios - 一起使用 ReactiveCocoa、Kiwi 和 Cocoapods,得到“不是元组”异常
我正在尝试使用 ReactiveCocoa 和 Kiwi 设置一个新项目进行测试,使用 CocoaPods 进行依赖管理。
我为典型的登录屏幕设置了第一个测试,在用户输入用户名和密码之前,登录按钮不会启用。只是一些示例代码的简单版本:
问题是,当我运行测试时,出现以下错误:
当然,它是一个RACTuple
,所以这只是令人困惑。
我的研究在 ReactiveCocoa 上发现了以下问题:
https://github.com/ReactiveCocoa/ReactiveCocoa/issues/901
那里的诊断是 ReactiveCocoa 以某种方式连接了两次。在那里遇到问题的人通过放弃 CocoaPods 解决了这个问题。这似乎不对。有没有人得到这个工作?
为了完整起见,我的 Podfile 是:
ios - 类比较,isKindOfClass 在 Kiwi 规范中不起作用
我的 Kiwi 单元测试在这两行中失败是否有某些原因:
当这条线通过时?
objective-c - 一个单元如何测试与核心蓝牙 API 交互的代码?
我想对一个充当类的类进行单元CBPeripheralManagerDelegate
测试CBPeripheralManager
。通常,为了消除外部类依赖项,我会使用依赖注入的一种形式,方法是通过类初始化程序或属性传入。在处理基于单例的 API 时,我已经能够使用 Kiwi 之类的库来存根返回单例的类级别方法(即[ClassName stub:@selector(sharedInstance) andReturn:myStubbedInstance]
)。模拟情况下的问题CBPeripheralManager
是它的初始化程序采用委托实例。所以任何使用我的类的代码都需要做这样的事情:
然后,为了对我的PeripheralManagerWrapper
课程进行单元测试,我可以简单地实例化它并传入一个模拟的CBPeripheralManager
. 但是,我不喜欢我的包装对象的任何调用代码都必须通过此设置。有没有更好的模式来处理这种情况?我已经使用了 Kiwi 和 OCMockito,但似乎都没有提供这个功能,除非可能存根alloc
和init
方法,CBPeripheralManager
然后只是在PeripheralManagerWrapper
' 的初始化程序中实例化实例。