java - How to verify the order of mocks without explicitly defining the order of methods? -
java - How to verify the order of mocks without explicitly defining the order of methods? -
here method tested:
protected void mymethod(final myobject object) { object.setx(...); object.sety(...); myobjectrepository.update(object); } in order verify order of calls -so repository called after setter calls- needed create mock of myobject (since inorder works mocks). at end should this:
@mock private myobjectrepository myobjectrepositorymock; @test public void testmymethod() { myobject myobjectmock = mock(myobject.class); inorder inorder = mockito.inorder(myobjectmock, myobjectrepositorymock); // run test ..... inorder.verify(myobjectmock); inorder.verify(myobjectrepositorymock).update(myobjectmock); } .. see exception:
.. unfinishedverificationexception missing method phone call verify(mock) here: ... illustration of right verification: verify(mock).dosomething() since not have verify order of setter calls, grouping them , sth "first mock, method of mock argument should called"..
i not want define exact order this:
inorder.verify(myobjectmock).setx(..); inorder.verify(myobjectmock).sety(..); inorder.verify(myobjectrepositorymock).update(myobjectmock); is there way of doing this?
you can verify fields assertequals within of doanswer()
object.setx(-1); mockito.doanswer(new answer<void>() { public void answer(invocationonmock invocation) throws throwable { assertequals(1, object.getx()); homecoming null; } }).when(myobjectrepositorymock).update(object); that way, order of calls doesn't matter; matters @ time of update() call, right value in right place.
java unit-testing junit mocking mockito
Comments
Post a Comment