在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
的实例,它是模拟数据存储的代理。
现在问题是,如何正确验证参数?
答案 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);