在使用OCMock框架编写单元测试时,我遇到了一个特定的问题。
假设我有一些带有一个参数的方法。我需要的是存根该方法并获得相同的值。该值是计算得出的,因此我不能仅通过常规存根返回一些预定义的值。
该方法的伪声明(objc):
- (id)doSomething:(id)value;
答案 0 :(得分:2)
您可以使用OCMock的方法过滤功能:
@implementation OCmockPlaygroundTests
- (void)testStub{
TestClass * mockObject = OCMPartialMock([TestClass new]);
OCMStub([mockObject doSomethingWith:OCMOCK_ANY]).andCall(self, @selector(doSomethingWith:));
NSString * testInput = @"TEST_INPUT";
NSString * result = [mockObject doSomethingWith:testInput];
XCTAssertTrue([testInput isEqualToString:result]);
}
- (NSString *)doSomethingWith:(NSString *)input{
return input;
}
@end
OCMock代替了doSomethingWith:
的{{1}}方法,而是调用仅返回输入的测试用例中定义的实现。