Java 오픈소스 테스트 프레임워크이다.
**동적으로 Mock 객체
**를 만들어주는 Mock 프레임워크 중 가장 대표적인게 Mockito이다.
ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
위와 같은 방식으로 객체의 값을 간단하고 깔끔하게 테스트가 가능하다.
//you can create partial mock with spy() method:
List list = spy(new LinkedList());
//you can enable partial mock capabilities selectively on mocks:
Foo mock = mock(Foo.class);
//Be sure the real implementation is 'safe'.
//If real implementation throws exceptions or depends on specific state of the object then you're in trouble.
when(mock.someMethod()).thenCallRealMethod();
given(testClient.testMethod(mockId)).willCallRealMethod();
위와 같은 방식으로 어떤 메소드는 mocking을 하고
**어떤 메소드는 실제 인스턴스의 메소드를 호출
**하도록 구현이 가능하다.
List mock = mock(List.class);
when(mock.size()).thenReturn(10);
mock.add(1);
reset(mock);
//at this point the mock forgot any interactions and stubbing