检查OCMVerify中的参数是否正确

时间:2015-01-23 16:04:58

标签: objective-c ocmock

在OCMock中,有方法OCMVerify来验证交互。所以我做了以下内容,MyObjectData是一个简单的值持有者类。

OCMVerify([dataStore createOrUpdateMyObject:[OCMArg isKindOfClass:[MyObjectData class]]]);

这是有效的,但还不够,因为我想验证该方法不是使用此类的任何对象调用,而是使用正确的值。所以我做了以下事情:

// ...

    OCMVerify([dataStore createOrUpdateMyObject:[OCMArg checkWithSelector:@selector(verifyMyObjectDataAfterSave:) onObject:self]]);
}

- (BOOL)verifyMyObjectDataAfterSave:(id)obj {
    return YES;
}

但是obj参数不是我希望传递的MyObjectData实例,而是OCMVerifier的实例,它是模拟数据存储的代理。

现在问题是,如何正确验证参数?

1 个答案:

答案 0 :(得分:2)

你能使用期望吗?

id mockObj = OCMPartialMock(dataStore);
OCMExpect([mockObj createOrUpdateMyObject:[OCMArg checkWithBlock:^BOOL(MyObjectData *value)
                                           {
                                               XCTAssertEqual(value.someProperty, 999);
                                               return [value isKindOfClass:[MyObjectData class]];
                                           }]]);
[mockObj someMethod];
OCMVerifyAll(mockObj);