在使用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/

10-11 14:52