问题标签 [ocmockito]

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 回答
445 浏览

ios - ios TDD 与 Kiwi、OCHamcrest 和 OCMockiti,它们可以混合使用吗?

有没有人成功让 OCHamcrest 与 Kiwi 合作?我已经开始了一个 Kiwi 项目,然后我添加了 OCHamcrest 框架并成功构建。

但是,当我尝试使用 hamcrest 在我的 Kiwi 测试文件中断言条件时:

我的测试不会运行。它只是冻结了,我不得不手动杀死它。

主要是我想坚持使用 OCMockito,因为我熟悉并喜欢它(不太喜欢 OCHamcrest)。

我想知道是否有人可以帮助我解决这个问题?

0 投票
1 回答
424 浏览

objective-c - OCHamcrest 匹配器参数与验证时的 Mockito 模拟不兼容

通过以下单元测试,我使用 Mockito 来模拟 NSUserDefaults 但是当我尝试使用 OCHamcrest 匹配器来测试参数是否是 NSDictionary 的实例时,我收到警告:

将“id{HCMatcher}”发送到不兼容类型“NSDictionary *”的参数

谢谢

0 投票
1 回答
600 浏览

ios - 用于 OCMockito 模拟验证的自定义 OCHamcrest 匹配器

我正在使用 OCHamcrest 和 OCMockito 对 iOS 项目进行单元测试。我正在努力理解在对采用参数的方法期望的模拟验证中使用自定义匹配器。特别是,我想验证传递给预期方法的参数之一,但我需要拆开传递的参数才能这样做。为了演示,这是我的测试方法相关部分的内容:

-zkZSensorFound:fromSearchManager:接受一个包含 aEAAccessory作为属性的对象。在我的自定义匹配器中,我需要打开该对象并检查该属性以确保它与accessory此测试方法中的对象相同。像我在这里所做的那样传递到匹配器很容易accessory,但是如何获取传递给参数以在匹配器内部使用的实际对象?或者,我对这一切都错了吗?

更新

我已经接受了@JonReid 的答案,因为它比我炮制的解决方案要优雅得多。尽管如此,我认为我正在使用的东西(感谢这篇博文)可能在其他地方有用:

0 投票
2 回答
370 浏览

objective-c - 使用原始数组/指针参数验证 Objective-C 中的方法调用

我正在测试的课程中有两种方法:

-sendFormattedCommandForAddress:withData:andCommandType:构建一个char数组并将指向该数组的指针传递给-sendBuffer:length:. 此数组的内容因addressdata和而异commandType。在我的测试中,我想验证是否构建了正确的数组并将其传递给-sendBuffer:length:. OCMock 不会让我对这个uint8_t *论点设定期望。OCMockito/OCHamcrest 不会让我使用部分模拟(还)。我尝试-sendBuffer:length:使用在我的测试用例类中调用方法的方法来调配该方法,并对该方法调用设置期望。但是,当调用 swizzled 方法时,self指向被测类而不是我的测试用例。我可以在我的测试类中保留缓冲区,然后在我的测试中检查这个缓冲区的内容,但我讨厌在生产代码中添加一些东西来支持测试。有没有人对如何测试这种行为有更好的建议?

0 投票
1 回答
623 浏览

objective-c - 使用 OCMockito 对 NSURLConnection sendAsynchronousRequest 进行单元测试

我正在努力为具有类似接口的 API 包装器编写单元测试

它在后台调用此方法:

我不想使用委托,因为公开的 API 更适合 sendAsynchronousRequest 方法(并且每个请求不需要单独的累加器对象)。此外,我使用 OCMockito 来模拟整个代码的其余部分,它不支持部分模拟或模拟类方法。

是否有任何其他测试技术可以测试此功能?是否有必要使用委托?

0 投票
1 回答
3242 浏览

objective-c - 如何在 Kiwi 中为模拟方法设置参数期望

使用 OCMockito 和 OCHamcrest,我可以对模拟方法的参数设置期望,因此:

使用 Kiwi 似乎没有同样简单的方法可以做到这一点。可以使用间谍来捕获参数,例如:

然后检查对捕获对象的期望:

在 Kiwi 中是否有一种不那么笨拙的方法来做到这一点?

(我知道我可能可以在这里使用 hamcrest 匹配器,但目前我正在探索 Kiwi 的能力)。

0 投票
1 回答
1027 浏览

ios - 使用 OCMockito 验证方法调用

我在 ClassA 中有这两种方法

@执行

我的测试如下所示:

但这不起作用,我不断得到:

当调用 onSubmit 时,如何编写一个测试来验证 validateName 是否已执行。

0 投票
1 回答
535 浏览

unit-testing - 在 Kiwi 模拟上缺少验证方法是否有解决方法?

我非常喜欢用于单元测试的高度可预测的Arrange Act Assert 格式。

因为 Kiwi 没有针对模拟的显式验证语句,所以它强制使用不同的模式,例如:

我知道验证无论如何都会发生,但更喜欢能够快速扫描测试,将断言和期望放在一个可预测的地方。mockito(以及它的 Objective-C 实现OCMockito )很好地实现了这一点,其中验证步骤指定了方法调用 post-hoc,从而不需要事先的期望步骤。

我是一个相对的新西兰新手,所以我可能错过了文档中的一些内容。有没有明确验证 Kiwi 模拟的方法?

0 投票
1 回答
481 浏览

objective-c - Verify method call with a handle argument on an OCMockito mock

I have an OCMockito mock of a class QuestionBuilder with the method questionsFromJSON:error:. This method accepts a handle (NSError **)error as an argument. How do I verify the method was called?


I’ve tried:

and:


Both issue the error:

testQuestionJSONIsPassedToQuestionBuilder (QuestionCreationTests) failed:
*** -[NSProxy doesNotRecognizeSelector:questionsFromJSON:error:] called!

0 投票
1 回答
815 浏览

ios - 使用 OCMockito 测试发送到模拟协议的参数

美好的一天,我正在使用 OCHamcrest 和 OCMockito 开始我的使用 TDD 方法的路径,它们真的很酷的工具,但有一点我似乎不了解模拟协议并尝试评估参数。

考虑代码附带的示例:

它按预期工作,但是当我尝试使用模拟协议复制它时,它总是通过测试,例如:

在这个测试中,我试图测试参数是 NSArray 类的实例,它不应该通过。你能帮我发现我做错了什么吗?

非常感谢,

路易斯·亚历杭德罗