问题标签 [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 回答
289 浏览

ios - OCMockito 可以存根一个采用“const void *”参数的方法吗?

我的MessageSerializer班级有一个方法,其签名如下所示:

我可以使用 OCMockito 来存根吗?我的模拟序列化程序在哪里serializer,编译器在我的测试方法中批准了以下所有这些形式:

deserialize:length:...但是它们都不会导致模拟在被调用时将“消息”返回给被测类。

0 投票
1 回答
2231 浏览

ios - 如何使用 OCMockito 存根类方法?

OCMockito文档声称可以模拟类对象,但我该死的,如果我能弄清楚如何。以下测试失败Expected "Purple" but was ""

如果上面链接的常见问题解答部分的答案“你如何模拟一个类对象?” 并不意味着它可以存根类方法的返回值,它的用途什么?

编辑:

当然上面是一个退化的例子,真正的 [NSString string] 调用在被测方法内部:

...使上面的断言看起来像:

所以上面的完全不工作?那么,我如何在这里实现我想要做的事情呢?

0 投票
1 回答
1497 浏览

objective-c - OCMockito 使用块模拟调用

我想用以下消息声明模拟一个对象:

- (void)createWithCompletion:(void (^)(FuseResult *result, NSError *err)) completion;

是否可以模拟此消息必须处理的块调用?

我读了有块的ArgumentCaptorTest,但我不确定它是否相关。

0 投票
1 回答
1021 浏览

ocmockito - OCMockito 捕获原始类型?

如何使用 OCMockito 捕获具有原始值的参数?

MKTArgumentCaptor 似乎只能捕获对象类型?Xcode 说“指向整数转换的指针不兼容”。

0 投票
1 回答
1134 浏览

objective-c - OCMockito any() 用于原始类型

对于方法签名

我正在尝试查看是否永远不会调用任何值的 insertValue 。

由于编译器抱怨任何()原始类型,我该如何测试呢?

0 投票
1 回答
2631 浏览

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

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

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

0 投票
1 回答
467 浏览

objective-c - 如何使用 OCMock 或 OCMockito 验证对 NSURLProtocol 模拟的方法调用?

我想测试一个发出 GET 请求的方法。

这是一个人为的例子:

与其担心此方法的实现细节(例如,模拟、设置期望,然后验证依赖项),我更愿意能够测试是否发出了 GET 请求。

我相信我可以用NSURLProtocol做到这一点,但到目前为止我的尝试都没有成功。

例如,使用 OCMock:

上述测试失败,因为从未调用过 canInitWithRequest。

如何在 NSURLProtocol 上设置期望以验证请求是否正在发出?

0 投票
2 回答
377 浏览

ios - 在 OCMockito 中通过引用传递存根方法时出现异常

我正在尝试使用 OCMockito 来存根一个NSJSONSerialization方法。我以为我有一个解决方案,但事实证明它会导致此异常:

*** -[__NSArrayM objectAtIndex:]:索引 2 超出范围 [0 .. 1]

这就是我正在做的事情:

我猜问题出在错误参数上,因为它是通过引用传递的,我不相信我以前尝试过存根类似的东西。有谁知道让这个工作的方法?

这里的目标是让该+[NSJSONSeralization JSONObjectWithData:option:error]方法在从我的测试中调用时始终返回一个模拟 NSDictionary。

0 投票
1 回答
498 浏览

objective-c - 如何使用 OCMockito 验证只读属性的行为?

我正在使用带有 ReactiveCocoa 的 MVVM 和 OCMockito 进行测试。假设我有一个 ViewController A 和 ViewController B。A 需要对 B 执行 segue。我想验证当这种情况发生时,A 首先通过分配将必要的数据(“模型”)传递给 B。

B看起来像这样:

在视图控制器的某处A,有一条语句:

我想验证此分配是否正在发生,但viewModel属性是只读的。viewModel 由 viewController 的 init 方法初始化。

我怎么能在这里模拟出 viewModel 呢?

我可以部分模拟 viewControllerB 以返回一个 mock viewModel,然后我对其进行验证,但https://github.com/jonreid/OCMockito/issues/38说部分模拟已被删除。为什么?!

0 投票
1 回答
281 浏览

ios - 使用 OCMockito 如何验证任何选择器已传递给方法

我有一个视图控制器,它在 viewDidLoad 期间将自己添加为 UIApplicationDidBecomeActiveNotification 的观察者。我想验证这是否发生,但我不希望测试关心视图控制器为事件注册的特定选择器。

目前我的测试看起来像这样:

...但是为选择器传递“anything()”会导致编译器错误:“ARC 不允许将 Objective-C 指针隐式转换为 'SEL'”。

如果我通过“@selector(applicationDidBecomeActive:)”而不是任何东西,我可以使测试工作。那是视图控制器使用的确切选择器。但如果可能的话,我希望测试对具体实现没有太多了解。