Альтернативный метод any_number_of_times в заглушках
Я обновил свой проект до рельсов 4, но теперь я получаю предупреждения об устаревании, а один из них DEPRECATION: any_number_of_times устарел.. Код, для которого я получаю это предупреждение,
sponsorship = RSpec::Mocks::Mock.new(:sponsorship)
SPONSORSHIP.should_receive(:[]).with('sponsorship').any_number_of_times.and_return(sponsorship)
а другой сценарий
sponsorship.should_receive(:[]).with(key).any_number_of_times.and_return(value)
Я использовал заглушку для кода выше, но это не исправление. Можете ли вы найти, где я делаю это неправильно. Для stubbing я использовал
SPONSORSHIP.stub(:[]).with('sponsorship').and_return(sponsorship)
Ответы
Ответ 1
Метод any_number_of_times
устарел (и уходит в RSpec 3), потому что он ничего не тестирует. Он никогда не будет терпеть неудачу, поскольку его можно также назвать 0 раз. См. Расширенный аргумент в https://trello.com/c/p2OsobvA/78-update-website-menu-architecture-to-accommodate-pledging-as-well-as-weddings-memorials-etc.
Если вы ожидаете, что он будет вызываться хотя бы один раз, вы можете использовать at_least(1).times
.
Ответ 2
Так как any_number_of_times
не имеет никакой помощи, другие альтернативные методы, такие как at_least(n)
и at_most(n)
, помогли удалить эти предупреждения об устаревании.