>>> from mockito import * >>> myMock = mock() >>> when(myMock).getStuff().thenReturn('stuff') <mockito.invocation.AnswerSelector object at 0x00CA0BB0> >>> myMock.getStuff() 'stuff' >>> verify(myMock).getStuff() >>> when(myMock).doSomething().thenRaise(Exception('Did a bad thing')) <mockito.invocation.AnswerSelector object at 0x00CA0C10> >>> myMock.doSomething() Traceback (most recent call last): <...> Exception: Did a bad thing
No difference whatsoever when you mock modules
>>> import os.path >>> when(os.path).exists('somewhere/somewhat').thenReturn(True) <mockito.invocation.AnswerSelector object at 0x00D394F0> >>> when(os.path).exists('somewhere/something').thenReturn(False) <mockito.invocation.AnswerSelector object at 0x00C7D1B0> >>> os.path.exists('somewhere/somewhat') True >>> os.path.exists('somewhere/something') False >>> os.path.exists('another_place') Traceback (most recent call last): <...> mockito.invocation.InvocationError: You called exists with ('another_place',) as arguments but we did not expect that. >>> when(os.path).exist('./somewhat').thenReturn(True) Traceback (most recent call last): <...> mockito.invocation.InvocationError: You tried to stub a method 'exist' the object (<module 'ntpath' from ...>) doesn't have.
If that's too strict, you can change it
>>> when(os.path, strict=False).exist('another_place').thenReturn('well, nice here') <mockito.invocation.AnswerSelector object at 0x00D429B0> >>> os.path.exist('another_place') 'well, nice here' >>> os.path.exist('and here?') >>>
No surprise, you can do the same with your classes
>>> class Dog(object): ... def bark(self): ... return "Wau" ... >>> when(Dog).bark().thenReturn('Miau!') <mockito.invocation.AnswerSelector object at 0x00D42390> >>> rex = Dog() >>> rex.bark() 'Miau!'
or just with instances, first unstub
>>> unstub() >>> rex.bark() 'Wau'
then do
>>> when(rex).bark().thenReturn('Grrrrr').thenReturn('Wuff') <mockito.invocation.AnswerSelector object at 0x00D48790>
and get something different on consecutive calls
>>> rex.bark() 'Grrrrr' >>> rex.bark() 'Wuff' >>> rex.bark() 'Wuff'
and since you stubbed an instance, a different instance will not be stubbed
>>> bello = Dog() >>> bello.bark() 'Wau'
You have 4 modifiers when verifying
>>> verify(rex, times=3).bark() >>> verify(rex, atleast=1).bark() >>> verify(rex, atmost=3).bark() >>> verify(rex, between=[1,3]).bark() >>>
Finally, we have two matchers
>>> myMock = mock() >>> when(myMock).do(any(int)).thenReturn('A number') <mockito.invocation.AnswerSelector object at 0x00D394B0> >>> when(myMock).do(any(str)).thenReturn('A string') <mockito.invocation.AnswerSelector object at 0x00D39E70> >>> myMock.do(2) 'A number' >>> myMock.do('times') 'A string' >>> verify(myMock).do(any(int)) >>> verify(myMock).do(any(str)) >>> verify(myMock).do(contains('time')) >>> exit()
.. toctree:: :maxdepth: 2