Безобидный рефакторинг сервиса сломал 40 тестов с Verify
service.Checkout(cart);
repo.Verify(r => r.GetCart(cart.Id), Times.Once);
pricing.Verify(p => p.Calculate(It.IsAny<Cart>()), Times.Once);
repo.Verify(r => r.Save(It.IsAny<Order>()), Times.Once);
Разработчик кэшировал корзину, чтобы не читать её дважды, — поведение для клиента не изменилось, но упали 40 тестов. Что не так с тестами?
- Они проверяют порядок вызовов, а не результат
- В них не хватает Verify для кэша
- Нужно использовать Times.AtLeastOnce везде
- Moq нельзя использовать для репозиториев
