您好,我正在使用OCHamcrest和OCMockito开始我的测试驱动开发方法,他们真的很酷的工具,但有一件事,我似乎不理解模拟一个协议,并试图评估一个参数。
考虑代码附带的示例:
- (void)testVerifyWithMatcherForPrimitive
{
NSMutableArray *mockArray = mock([NSMutableArray class]);
[mockArray removeObjectAtIndex:2];
[[verify(mockArray) withMatcher:greaterThan([NSNumber numberWithInt:1]) forArgument:0]
removeObjectAtIndex:0]; // The 0 is a placeholder, replaced by the matcher
}它的工作方式与预期一样,但当我尝试使用模拟协议复制它时,它总是能通过测试,例如:
- (void)testFirstParameter
{
// given
id<TestProtocol> mockElement = mockProtocol(@protocol(TestProtocol));
// when
id toProcess = nil;
[mockElement process: toProcess];
// then
id firstArgumentMatcher = instanceOf([NSArray class]);
[[verify(mockElement) withMatcher: firstArgumentMatcher forArgument: 0] process: toProcess];
}在这个测试中,我试图测试参数是NSArray类的实例,它不应该通过。你能帮我找出我哪里做错了吗?
非常感谢,
路易斯·亚历杭德罗
发布于 2013-04-18 13:00:37
我觉得你想
[[verify(mockElement) process:instanceOf([NSArray class])];仅对基元参数使用withMatcher:forArgument:。
https://stackoverflow.com/questions/15928906
复制相似问题