1つのテストメソッド内で、1つのクラスの擬似および非モックされたインスタンスを作成するにはどうすればよいですか?1つのテストメソッド内で、1つのクラスの擬似および非擬似インスタンスを作成するにはどうすればよいですか?
「lastContact」属性が5分より古い場合、「Entry」は期限切れになる可能性があります。私はそのようなEntryオブジェクトを作成するためにMockを使用します:
@Test
public void entryOlderThanFiveMinutesIsExpired() {
new MockUp<Entry>() {
@Mock
public Date getLastContact() {
return new Date(10000L); // date in the past
}
};
Entry expiredEntry = new Entry();
assertThat(expiredEntry.isExpired(), is(true));
}
これは問題なく動作します。 次のテストでは、「期限切れ」と「期限切れ」以外のエントリが必要です(両方ともEntryListに追加され、「パージ()」の後に期限切れでないエントリのみ残る必要があります)。
@Test
public void test() {
Entry unexpiredEntry = new Entry(); // this should not be mocked
new MockUp<Entry>() {
@Mock(invocations = 1)
public Date getLastContact() {
return new Date(10000L); // date in the past
}
};
Entry expiredEntry = new Entry();
assertThat(expiredEntry.isExpired(), is(true));
assertThat(unexpiredEntry.isExpired(), is(false));
}
は、これは失敗します。 しかしモックをセットアップするには、そのクラスのようにすべてのインスタンスが嘲笑され、クラス全体を変更します。私はモックを設定するいくつかの方法を試しましたが、私はそれを得ませんでした。 この問題を解決するにはどうすればよいですか?
はあなたがmockit.Invocation
パラメータを追加し、モックメソッドreentrant
をすることによってそれを行うことができ、あなたに