Я работаю над книгой «Развитие объектно-ориентированного программного обеспечения, управляемого тестами».
Но я использую AssertJ и Mockito вместо Hamcrest и jMock.
Раньше мне нужно было проверять наличие одного или нескольких событий таблицы, связанных со строкой 0 таблицы JTable
.
// verify that one or more events in row 0 happen
verify(listener, atLeastOnce() ).tableChanged(refEq(new TableModelEvent(model, 0)));
(Примечание: Мурейник любезно проинформировал меня о refEq
здесь несколько дней назад).
Теперь мне нужно проверить, что ровно один TableModelEvent
встречается в строке 0 типа TableModelEvent.UPDATE
. В книге есть:
one( listener ).tableChanged( with( aChangeInRow( 0 )));
... aChangeInRow
, похоже, исходит от jMock.
NB TableModelEvent
имеет полезный метод 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 );
но это даже не компилируется... что я должен был написать?
В более общем плане существует ли метод AssertJ/Mockito для извлечения значения, переданного в качестве параметра (здесь TableModelEvent
) проверенному методу, чтобы подвергнуть его любым тестам, которые вы хотите?