Альтернативный метод 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), помогли удалить эти предупреждения об устаревании.