问题标签 [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.
ios - OCMockito 可以存根一个采用“const void *”参数的方法吗?
我的MessageSerializer
班级有一个方法,其签名如下所示:
我可以使用 OCMockito 来存根吗?我的模拟序列化程序在哪里serializer
,编译器在我的测试方法中批准了以下所有这些形式:
deserialize:length:
...但是它们都不会导致模拟在被调用时将“消息”返回给被测类。
ios - 如何使用 OCMockito 存根类方法?
OCMockito文档声称可以模拟类对象,但我该死的,如果我能弄清楚如何。以下测试失败Expected "Purple" but was ""
:
如果上面链接的常见问题解答部分的答案“你如何模拟一个类对象?” 并不意味着它可以存根类方法的返回值,它的用途是什么?
编辑:
当然上面是一个退化的例子,真正的 [NSString string] 调用在被测方法内部:
...使上面的断言看起来像:
所以上面的完全不工作?那么,我如何在这里实现我想要做的事情呢?
objective-c - OCMockito 使用块模拟调用
我想用以下消息声明模拟一个对象:
- (void)createWithCompletion:(void (^)(FuseResult *result, NSError *err)) completion;
是否可以模拟此消息必须处理的块调用?
我读了有块的ArgumentCaptorTest,但我不确定它是否相关。
ocmockito - OCMockito 捕获原始类型?
如何使用 OCMockito 捕获具有原始值的参数?
MKTArgumentCaptor 似乎只能捕获对象类型?Xcode 说“指向整数转换的指针不兼容”。
objective-c - OCMockito any() 用于原始类型
对于方法签名
我正在尝试查看是否永远不会调用任何值的 insertValue 。
由于编译器抱怨任何()原始类型,我该如何测试呢?
objective-c - 一个单元如何测试与核心蓝牙 API 交互的代码?
我想对一个充当类的类进行单元CBPeripheralManagerDelegate
测试CBPeripheralManager
。通常,为了消除外部类依赖项,我会使用依赖注入的一种形式,方法是通过类初始化程序或属性传入。在处理基于单例的 API 时,我已经能够使用 Kiwi 之类的库来存根返回单例的类级别方法(即[ClassName stub:@selector(sharedInstance) andReturn:myStubbedInstance]
)。模拟情况下的问题CBPeripheralManager
是它的初始化程序采用委托实例。所以任何使用我的类的代码都需要做这样的事情:
然后,为了对我的PeripheralManagerWrapper
课程进行单元测试,我可以简单地实例化它并传入一个模拟的CBPeripheralManager
. 但是,我不喜欢我的包装对象的任何调用代码都必须通过此设置。有没有更好的模式来处理这种情况?我已经使用了 Kiwi 和 OCMockito,但似乎都没有提供这个功能,除非可能存根alloc
和init
方法,CBPeripheralManager
然后只是在PeripheralManagerWrapper
' 的初始化程序中实例化实例。
objective-c - 如何使用 OCMock 或 OCMockito 验证对 NSURLProtocol 模拟的方法调用?
我想测试一个发出 GET 请求的方法。
这是一个人为的例子:
与其担心此方法的实现细节(例如,模拟、设置期望,然后验证依赖项),我更愿意能够测试是否发出了 GET 请求。
我相信我可以用NSURLProtocol做到这一点,但到目前为止我的尝试都没有成功。
例如,使用 OCMock:
上述测试失败,因为从未调用过 canInitWithRequest。
如何在 NSURLProtocol 上设置期望以验证请求是否正在发出?
ios - 在 OCMockito 中通过引用传递存根方法时出现异常
我正在尝试使用 OCMockito 来存根一个NSJSONSerialization
方法。我以为我有一个解决方案,但事实证明它会导致此异常:
*** -[__NSArrayM objectAtIndex:]:索引 2 超出范围 [0 .. 1]
这就是我正在做的事情:
我猜问题出在错误参数上,因为它是通过引用传递的,我不相信我以前尝试过存根类似的东西。有谁知道让这个工作的方法?
这里的目标是让该+[NSJSONSeralization JSONObjectWithData:option:error]
方法在从我的测试中调用时始终返回一个模拟 NSDictionary。
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说部分模拟已被删除。为什么?!
ios - 使用 OCMockito 如何验证任何选择器已传递给方法
我有一个视图控制器,它在 viewDidLoad 期间将自己添加为 UIApplicationDidBecomeActiveNotification 的观察者。我想验证这是否发生,但我不希望测试关心视图控制器为事件注册的特定选择器。
目前我的测试看起来像这样:
...但是为选择器传递“anything()”会导致编译器错误:“ARC 不允许将 Objective-C 指针隐式转换为 'SEL'”。
如果我通过“@selector(applicationDidBecomeActive:)”而不是任何东西,我可以使测试工作。那是视图控制器使用的确切选择器。但如果可能的话,我希望测试对具体实现没有太多了解。