JMock を使用して素敵なモックを作成する最良の方法はありますか?
例えば:
public interface Dependency {
void someSetUp();
void interactionUnderTest();
void someCleaningAfterWork();
}
public class CUT {
private Dependency dependency;
public void methodUnderTest() {
dependency.someSetUp();
dependency.interactionUnderTest();
dependency.someCleaningAfterWork();
}
public void setDepencency(Dependency dependency) {
this.dependency = dependency;
}
}
Mockito の場合、ソリューションは簡単です。
@Test
public void mockitoExample() throws Exception {
Dependency dependency = mock(Dependency.class);
classUnderTest.setDepencency(dependency);
classUnderTest.methodUnderTest();
verify(dependency).interactionUnderTest();
}
しかし、JMockの場合、私はこの解決策しか見つけませんでした:
@Test
public void jMockExample() throws Exception {
JUnit4Mockery ctx = new JUnit4Mockery();
final Dependency dependency = ctx.mock(Dependency.class);
classUnderTest.setDepencency(dependency);
ctx.checking(new Expectations() {{
allowing(dependency).someSetUp();
one(dependency).interactionUnderTest();
allowing(dependency).someCleaningAfterWork();
}});
classUnderTest.methodUnderTest();
}
問題は次の行にあります。
allowing(dependency).someSetUp();
and
allowing(dependency).someCleaningAfterWork();
Dependency から別のメソッドを呼び出すなどして methodUnderTest が変更された場合、JMock を使用する場合はテストを手動で変更する必要があります。それを回避する方法はありますか?
PS私の英語について申し訳ありません