Ev.
Ev.

Reputation: 7589

Verify a method was never called with OCMock 3

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.

Upvotes: 9

Views: 4204

Answers (3)

Ruslan Mansurov
Ruslan Mansurov

Reputation: 1301

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

Upvotes: 1

tommys
tommys

Reputation: 865

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]];

Upvotes: 0

Erik Doernenburg
Erik Doernenburg

Reputation: 3014

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

Upvotes: 10

Related Questions