Как правильно использовать verifyNoUnwantedInteractions () в Python Mockito? - PullRequest
0 голосов
/ 12 декабря 2018

Я пытался использовать verifyNoUnwantedInteractions() в Python-версии Mockito, но либо у меня неправильное понимание того, что он должен делать, либо он не работает.Я думал, что произойдет, что он проверит, что не было никаких expect ed взаимодействий с методами-заглушками.Однако вот что происходит:

Это проходит.Я ожидал бы, что вызов destroy () вызовет исключение, потому что это не expect ed

expect(maker, times=1).create().thenReturn(thing)
when(maker).destroy().thenReturn(thing)
maker.start() # Calls both create() and destroy()
verifyNoUnwantedInteractions(maker)

Это не проходит, потому что destroy () вызывалось более нуля раз.verifyNoUnwantedInteractions() не является необходимым, так как в любом случае он терпит неудачу.

expect(maker, times=1).create().thenReturn(thing)
expect(maker, times=0).destroy().thenReturn(thing)
when(maker).destroy().thenReturn(thing)
maker.start() # Calls both create() and destroy()
verifyNoUnwantedInteractions(maker)

До сих пор мне кажется, что verifyNoUnwantedInteractions() довольно бесполезен, в чем причина его использования и как сделать это правильно?

1 Ответ

0 голосов
/ 24 января 2019

verifyNoUnwantedInteractions только проверяет expect ed заглушки.Заглушки, которые вы создаете с помощью when, не учитываются.

Теперь я думаю, что все сводится к разнице между when и expect.Если вы делаете

when(maker).destroy()

, вы можете звонить так часто, как хотите, включая ноль раз.Но вы, безусловно, не должны verify сколько раз вы вызывали его после запуска тестируемого устройства.Это будет похоже на любое другое утверждение в тестовой функции, а именно, когда вы проверяете .

Сравните это с expect, где вы устанавливаете время ожидания вызова заранее.

expect(maker, times=1).destroy()

Теперь тестируемый код может вызывать этот метод ровно один раз, в противном случае он будет выдавать тестируемый код.

Для того, что мы обсуждали здесь в примерах, verifyNoUnwantedInteractions будет проверять только, был ли maker.destroy() вызван вообще .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...