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

Verify a method was never called with OCMock 3

如何验证从未使用 OCMock 3 调用过的方法?

我在想这样的事情:

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

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

请参阅 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

我在让 reject-method 工作时惨败,所以我的解决方案是简单地存根 method-not-to-be-called(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]];

正如我回答here, starting from version 3.3 OCMock has OCMReject宏。