javafx ObservableList が変更されたときにいくつかのイベントがトリガーされることを、mockito を使用してテストしたいと思います。
私はこのようにしようとしました:
@Test
public void handleListChanged() throws Exception {
// [given]
ObservableList<String> list = FXCollections.observableArrayList();
ListChangeListener<String> listener = mock(ListChangeListener.class);
list.addListener(listener);
// [when]
list.add("test");
// [then]
ArgumentCaptor<Change> argument = ArgumentCaptor.forClass(Change.class);
verify(listener).onChanged(argument.capture());
assertTrue(argument.getValue().wasAdded());
}
bu anIllegalStateException
は最後の行でレイズします:
java.lang.IllegalStateException
at com.sun.javafx.collections.NonIterableChange.checkState(NonIterableChange.java:101)
at com.sun.javafx.collections.NonIterableChange.getPermutation(NonIterableChange.java:81)
at javafx.collections.ListChangeListener$Change.wasPermutated(ListChangeListener.java:156)
at javafx.collections.ListChangeListener$Change.wasAdded(ListChangeListener.java:165)
at FXCollectionsTest.handleListChanged(FXCollectionsTest.java:28
wasAdded()メソッドのドキュメントには、「この変更が初期状態にある場合」IllegalArgumentException
にスローされる可能性があると警告されていますが、理解できません。
コードが機能しないのはなぜですか?
mockito を使用してこのコードをテストするソリューションはありますか?