在使用OCMock框架编写单元测试时,我遇到了一个特定的问题。
假设我有一些带有一个参数的方法。我需要的是存根该方法并获得相同的值。该值是计算得出的,因此我不能仅通过常规存根返回一些预定义的值。
该方法的伪声明(objc):
- (id)doSomething:(id)value;
最佳答案
您可以使用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
代替
doSomethingWith:
的TestClass
方法,OCMock将调用仅返回输入的测试用例中定义的实现。关于ios - OCMock:返回与通过参数获取相同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51516232/