9

How do I verify a method is never called with OCMock 3?

I was thinking something like this:

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

But it seems like OCMVerify doesn't throw for a fail.

Ev.
  • 7,109
  • 14
  • 53
  • 87

3 Answers3

10

Please see first point under http://ocmock.org/reference/#advanced-topics

Note that reject at this point in time requires the old-style syntax and it must be called before the method may be invoked, ie.

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

For a glimpse on what's planned, see https://github.com/erikdoe/ocmock/issues/109

Erik Doernenburg
  • 2,933
  • 18
  • 21
1

As I answered here, starting from version 3.3 OCMock has OCMReject macro.

Community
  • 1
  • 1
Ruslan Mansurov
  • 1,281
  • 16
  • 23
0

I failed miserably at getting the reject-method to work so my solution was to simply stub the method-not-to-be-called(notifyChange: in example below) with throwing an exception whenever it is called.

// 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]];
tommys
  • 865
  • 1
  • 11
  • 21