验证从未使用OCMock 3调用方法

时间:2015-02-25 22:55:52

标签: objective-c cocoa ocmock

如何验证永远不会使用OCMock 3调用方法?

我在想这样的事情:

XCTAssertThrows(OCMVerify([_restDataSource getSomeStuff:[OCMArg any]]));

但似乎OCMVerify不会因为失败而抛出。

3 个答案:

答案 0 :(得分:10)

请参阅http://ocmock.org/reference/#advanced-topics

下的第一点

请注意,此时reject需要旧式语法,并且必须在调用方法之前调用它,即

// first set up the mock
[[mock reject] methodThatShouldNotBeCalled]
// then call method that should not result in the call

有关计划内容的一瞥,请参阅https://github.com/erikdoe/ocmock/issues/109

答案 1 :(得分:1)

当我回答here时,从版本3.3开始,OCMock有OCMReject宏。

答案 2 :(得分:0)

我失败了让 reject-method 工作,所以我的解决方案是简单地存根方法 - 不要被称为(notifyChange:在示例中)如果被调用则抛出异常。

// Set up the mock.
id<TSModelObserver> observer = OCMProtocolMock(@protocol(TSModelObserver));

// Stub the forbidden method call with throwing an exception.    
[OCMStub([observer notifyChange:model]) andThrow:[NSException new]];