【发布时间】:2013-11-05 21:30:50
【问题描述】:
OCMockito documentation claims it's possible to mock class objects,但我该死的,如果我能弄清楚怎么做。以下测试以Expected "Purple" but was "" 失败:
- (void)testClassMethodMocking
{
Class stringClassMock = mockClass([NSString class]);
[given([stringClassMock string]) willReturn:@"Purple"];
assertThat([NSString string], equalTo(@"Purple"));
}
如果上面链接的常见问题解答部分的答案“你如何模拟一个类对象?” not 是否暗示可以存根类方法的返回值,它用于什么?
编辑:
当然上面是一个退化的例子,真正的[NSString string]调用在被测方法内部:
- (NSString *)methodThatCallsAClassMethod
{
return [NSString string];
}
... 使上面的断言看起来像:
assertThat([testedObject methodThatCallsAClassMethod], equalTo(@"Purple"));
所以上面的方法完全行不通?那么,我该如何实现我想要在这里做的事情呢?
【问题讨论】:
标签: ios objective-c unit-testing mocking ocmockito