私は、「Growing Object-Oriented Software Guided by Tests」という本に取り組んでいます。
しかし、私は Hamcrest と jMock の代わりに AssertJ と Mockito を使用しています。
の行 0 に関連付けられた 1 つ以上のテーブル イベントの発生を確認する必要がありましたJTable。
// verify that one or more events in row 0 happen
verify(listener, atLeastOnce() ).tableChanged(refEq(new TableModelEvent(model, 0)));
(注:私は数日前refEqにムレイニクから親切に知らされました)。
ここで、タイプTableModelEventの行 0 で正確に 1 つが発生したことを確認する必要があります。TableModelEvent.UPDATEこの本には次のものがあります。
one( listener ).tableChanged( with( aChangeInRow( 0 )));
... aChangeInRowjMock から来ているようです。
NBTableModelEventには便利な方法がありgetType()ます。書きたいことは次のとおりです。
// verify that precisely one ***change*** event happens in row 0
// *** CAVEAT: ERRONEOUS CODE ***
verify( listener ).tableChanged(refEq(new TableModelEvent(model, 0))).getType().isEqualTo( TableModelEvent.UPDATE );
しかし、これはコンパイルさえしません...私は何を書くべきでしたか?
より一般的には、パラメーターとして渡された値 (ここでは a TableModelEvent) を検証済みのメソッドに抽出して、必要なテストを行うための AssertJ/Mockito 手法はありますか?