我正在尝试使用OCMockito来存根NSJSONSerialization
方法。我以为我有一个解决方案,但事实证明它导致了这个例外:
*** - [__ NSArrayM objectAtIndex:]:索引2超出界限[0 .. 1]
这就是我在做的事情:
Class mockClass = MKTMockClass([NSJSONSerialization class]);
MKTOngoingStubbing *stubStepOne = MKTGiven([mockClass JSONObjectWithData:nil options:0 error:nil]);
id stubStepTwo = [stubStepOne withMatcher:anything() forArgument:1];
id stubStepThree = [stubStepTwo withMatcher:anything() forArgument:2];
[stubStepThree willReturn:mock([NSDictionary class])];
我猜测问题在于错误参数,因为那意味着通过引用传递,我不相信我曾经尝试过这样的东西。有谁知道让这个工作的方法?
这里的目标是让+[NSJSONSeralization JSONObjectWithData:option:error]
方法在从我的测试中调用时始终返回一个模拟NSDictionary。
答案 0 :(得分:1)
我之前没有使用过OCMockito(最近一直在使用OCMock)所以这只是猜测,但你只是错过了第三个参数吗?
看起来OCMockito正在寻找数组中的第三个对象,看起来你只设置了两个参数。
如果你替换它是否有效:
[stubStepThree willReturn:mock([NSDictionary class])];
与
id stubStepFour = [stubStepThree withMatcher:anything() forArgument:3];
[stubStepFour willReturn:mock([NSDictionary class])];
答案 1 :(得分:1)
OCMockito 1。2。0(2014年4月5日发布)现在支持指针参数,包括NSError **。
release notes中的更多信息。