OCMock:返回与通过参数获取相同的值

时间:2018-07-25 10:08:02

标签: ios objective-c unit-testing ocmock

在使用OCMock框架编写单元测试时,我遇到了一个特定的问题。

假设我有一些带有一个参数的方法。我需要的是存根该方法并获得相同的值。该值是计算得出的,因此我不能仅通过常规存根返回一些预定义的值。

该方法的伪声明(objc):

- (id)doSomething:(id)value;

1 个答案:

答案 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}}方法,而是调用仅返回输入的测试用例中定义的实现。