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