Убедитесь, что метод был вызван с аргументами в некоторый момент во время теста
Я хочу убедиться, что мой Foo.bar
метод вызывается с true
в какой-то момент во время моего теста. До сих пор я мог только утверждать против первого звонка Foo.bar
, Я должен утверждать против любого вызова.
Это то, что я до сих пор, но не работает:
expect(Foo).to receive(:bar).at_least(:once).with("true")
Foo.bar("false")
Foo.bar("false")
Foo.bar("true")
Foo.bar("false")
Это терпит неудачу на первом Foo.bar
потому что "ложь" не соответствует моим "истинным" ожиданиям. Как бы вы переписали это, чтобы пройти, потому что Foo.bar("true")
вызывается в какой-то момент во время теста?
1 ответ
Решение
Я думаю, что в этом случае вам нужно будет делать то, что я считаю методом, эквивалентным as_null_object
:
describe Foo
describe 'testing .bar multiple times' do
before do
allow(Foo).to receive(:bar) # stub out message
end
it "can determine how many times it has been called with 'true'" do
expect(Foo).to receive(:bar).at_least(:once).with("true")
expect(Foo).to receive(:bar).at_most(:once).with("true")
Foo.bar("false")
Foo.bar("false")
Foo.bar("true")
Foo.bar("false")
end
end
end