Я понимаю, что мы можем проверить, отправляются ли методы объектам Mock, используя expect
, но как насчет проверки, отправляются ли методы объектам, которые не являются Mocks, но являются фактическими объектами в вашем приложении?
Мотивация: Сэнди Метц в «выступлении» «Волшебные приемы тестирования» https://www.youtube.com/watch?v=URSWYvyc42M говорит, что для модульного тестирования исходящих вызовов командных методов (объясняется в ее выступлении) мы должны убедиться, что сообщение отправлено.Я пытаюсь это сделать, но единственное, что я нашел в MiniTest, это assert_send
, у которого есть несколько проблем:
- Это устарело.
- Это не такпринять во внимание значение аргументов, отправленных получающему объекту.Если я запусту
assert_send([object, :method_called, 'argument 1', 'argument 2'])
, утверждение вернет true, даже если object
ожидал строки, отличные от 'argument 1'
и 'argument 2'
.
Я поищу в интернете лучшую часть2 дня на это.У кого-нибудь есть идеи?