테스트 클래스에는 일반적으로 사용되는 Bar
객체 를 구성하는 개인 메서드가 있습니다. Bar
생성자는 호출 someMethod()
내 조롱 개체의 방법 :
private @Mock Foo mockedObject; // My mocked object
...
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
}
내 테스트 방법 중 일부에서 someMethod
특정 테스트에 의해 호출 되기를 원했습니다 . 다음과 같은 것 :
@Test
public void someTest() {
Bar bar = getBar();
// do some things
verify(mockedObject).someMethod(); // <--- will fail
}
조롱 된 객체가 someMethod
두 번 호출 되었으므로 실패합니다 . 테스트 메소드가 메소드의 부작용을 신경 쓰지 않기를 원 getBar()
하므로 끝에 모의 객체를 재설정하는 것이 합리적 getBar()
입니까?
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
reset(mockedObject); // <-- is this OK?
}
문서에 모의 객체를 재설정하는 것이 일반적으로 나쁜 테스트를 나타 내기 때문에 제안합니다. 그러나 이것은 나에게 괜찮습니다.
대안
다른 선택은 전화하는 것 같습니다 :
verify(mockedObject, times(2)).someMethod();
내 의견으로는 각 테스트가 기대치에 대해 알도록 강요 getBar()
하지 않습니다.