问题标签 [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.

0 投票
1 回答
2762 浏览

objective-c - 如何在 Kiwi 中存根方法块?

我想存根一个使用 Kiwi 将块作为参数的方法。这是带有代码的完整解释:

我有一个名为的类TestedClass,它有一个testedMethod依赖于NetworkClass通过 AFNetworking 调用到服务器的类的方法,并通过块返回其响应。翻译成代码:

我如何使用 Kiwi 存根networkMethod与块以进行单元测试testMethod

更新:找到如何在 Kiwi 中执行此操作,请参阅下面的答案。

0 投票
1 回答
378 浏览

ios - 使用 Kiwi 捕获静态方法调用的参数

链接显示如何使用 Kiwi 捕获模拟对象的参数。

有没有办法捕获静态方法调用的参数?在我看来,这只适用于实例方法。

0 投票
0 回答
307 浏览

reactive-cocoa - ReactiveCocoa 的 Kiwi 测试产生 EXC_BAD_ACCESS

我正在尝试使用 Kiwi 框架测试 ReactiveCocoa 代码。

这是代码:

这是测试用例

每次我运行测试用例时,当它尝试添加观察者时,我在 RACKVOTrampoline 类中都有一个 EXC_BAD_ACCESS

有什么建议么?

生产代码可以很好地与 ReactiveCocoa 一起使用。

0 投票
1 回答
1511 浏览

ios - 使用 Kiwi 测试 MagicalRecord 对象时,默认上下文为 nil

我有两个用 Kiwi 编写的规范,它们都调用这两种方法beforeAll

[MagicalRecord cleanUp];afterAll.

这些规格之一没有说Default Context is nil! Did you forget to initialize the Core Data Stack?,但另一个没有。当我注释掉第一个规范时,第二个规范仍然失败。当我注释掉第二个规范时,第一个规范仍然通过,因此顺序似乎并不重要,或者它们正在并行运行并导致问题。

谁能阐明为什么会发生这种情况?这是失败的完整规范:

+ (NSManagedObjectContext *) MR_defaultContextNSAssert 说它失败了Default Context is nil! Did you forget to initialize the Core Data Stack?

0 投票
2 回答
687 浏览

ios - 存根方法并将其返回值动态设置为输入参数

我想动态地将一个依赖于参数的值返回给一个模拟方法,概念上是这样的:

或者像使用 OCMock 一样访问块中的调用:

猕猴桃可以吗?

0 投票
1 回答
943 浏览

cocoa-touch - 使用 NSDateFormatter 避免脆弱的单元测试

测试 NSDateFormatter 方法的最佳实践是什么?例如,假设我有一个方法:

我有两种方法可以考虑使用 Kiwi 测试此方法:

1)在单元测试中创建相同的格式化程序:

2)明确写出预期的输出:

现在,对我来说,#1 似乎有点多余。我知道测试会通过,因为我实际上是在单元测试中复制该方法。

方法#2 是一个非首发,因为它非常脆弱。它完全依赖于您所期望的测试设备当前语言环境。

所以我的问题是:是否有更合适的方法来测试这种方法,或者我应该继续使用测试方法#1。

0 投票
1 回答
358 浏览

ios - Objective-C 单元测试私有 UIViewController 接口

我有一个 UIViewController,我一直在尝试对它进行单元测试。我有一些私有变量和方法。我希望他们保持私密。问题是,我真的应该测试私有接口吗?只要它从“外部”的角度做它应该做的事情,它在内部的表现是否重要?

如果我开始测试私有接口,测试会难以理解/维护/修改吗?当涉及到更改内部实现的难易程度时,这会是一个重要的限制因素吗?头文件中没有提到私有方法/属性,因此,如果其他人出现,该人将不得不进入私有接口。

另外,我应该测试 UIViewController 和 UIView 之间的交互吗?

0 投票
1 回答
807 浏览

ios - 一起使用 ReactiveCocoa、Kiwi 和 Cocoapods,得到“不是元组”异常

我正在尝试使用 ReactiveCocoa 和 Kiwi 设置一个新项目进行测试,使用 CocoaPods 进行依赖管理。

我为典型的登录屏幕设置了第一个测试,在用户输入用户名和密码之前,登录按钮不会启用。只是一些示例代码的简单版本:

问题是,当我运行测试时,出现以下错误:

当然,它是一个RACTuple,所以这只是令人困惑。

我的研究在 ReactiveCocoa 上发现了以下问题:

https://github.com/ReactiveCocoa/ReactiveCocoa/issues/901

那里的诊断是 ReactiveCocoa 以某种方式连接了两次。在那里遇到问题的人通过放弃 CocoaPods 解决了这个问题。这似乎不对。有没有人得到这个工作?

为了完整起见,我的 Podfile 是:

0 投票
1 回答
706 浏览

ios - 类比较,isKindOfClass 在 Kiwi 规范中不起作用

我的 Kiwi 单元测试在这两行中失败是否有某些原因:

当这条线通过时?

0 投票
1 回答
2631 浏览

objective-c - 一个单元如何测试与核心蓝牙 API 交互的代码?

我想对一个充当类的类进行单元CBPeripheralManagerDelegate 测试CBPeripheralManager。通常,为了消除外部类依赖项,我会使用依赖注入的一种形式,方法是通过类初始化程序或属性传入。在处理基于单例的 API 时,我已经能够使用 Kiwi 之类的库来存根返回单例的类级别方法(即[ClassName stub:@selector(sharedInstance) andReturn:myStubbedInstance])。模拟情况下的问题CBPeripheralManager是它的初始化程序采用委托实例。所以任何使用我的类的代码都需要做这样的事情:

然后,为了对我的PeripheralManagerWrapper课程进行单元测试,我可以简单地实例化它并传入一个模拟的CBPeripheralManager. 但是,我不喜欢我的包装对象的任何调用代码都必须通过此设置。有没有更好的模式来处理这种情况?我已经使用了 Kiwi 和 OCMockito,但似乎都没有提供这个功能,除非可能存根allocinit方法,CBPeripheralManager然后只是在PeripheralManagerWrapper ' 的初始化程序中实例化实例。