Mockito проверяет больше не взаимодействует, но опускает получателей - PullRequest
8 голосов
/ 27 мая 2010

Mockito api предоставляет метод:

Mockito.verifyNoMoreInteractions(someMock);

но возможно ли в Mockito объявить, что я не хочу больше взаимодействий с данным макетом, за исключением взаимодействий с его методами-получателями?

Простой сценарий, в котором я проверяю, что SUT изменяет только определенные свойства данного макета и оставляет другие свойства неиспользованными.

В примере я хочу проверить, что UserActivationService меняет свойство Activeв экземпляре класса User, но ничего не делает со свойствами, такими как Role, Password, AccountBalance и т. д.

1 Ответ

14 голосов
/ 13 июня 2010

Нет, эта функциональность в настоящее время отсутствует в Mockito. Если вам это нужно часто, вы можете создать его самостоятельно, используя волшебство отражения, хотя это будет немного больно.

Я бы посоветовал проверить количество взаимодействий с методами, которые вы не хотите вызывать слишком часто, используя VerificationMode:

@Test
public void worldLeaderShouldNotDestroyWorldWhenMakingThreats() {
  new WorldLeader(nuke).makeThreats();

  //prevent leaving nuke in armed state
  verify(nuke, times(2)).flipArmSwitch();
  assertThat(nuke.isDisarmed(), is(true));
  //prevent total annihilation
  verify(nuke, never()).destroyWorld();
}

Конечно, чувствительность конструкции WorldLeader API может быть спорным, но в качестве примера он должен делать.

...