验证从未使用 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宏。
如何验证从未使用 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宏。