Я пытаюсь понять, почему результат этих испытаний, первый тест утверждает, что метод не был заострен, однако, второй.Устранение ошибки с RSpec
class Roll
def initialize
install if !installed?
end
def install; puts 'install'; end
end
describe Roll do
before do
class RollTestClass < Roll; end
RollTestClass.any_instance.stub(:install)
end
let(:roll_class) { RollTestClass }
let(:roll) { RollTestClass.new }
context 'when installed is true' do
before do
roll_class.any_instance.stub(:installed?).and_return(true)
end
it 'should not call install' do
expect(roll).to_not have_received(:install)
end
end
context 'when installed is false' do
before do
roll_class.any_instance.stub(:installed?).and_return(false)
end
it 'should call install' do
expect(roll).to have_received(:install)
end
end
end
Это также странно ошибка говорит expected to have received install
, но я думаю, что, скорее всего, просто неисправна обратная связь от DSL RSpec. Но, может быть, стоит отметить.
1) Roll when installed is true should not call install
Failure/Error: expect(roll).to_not have_received(:install)
#<RollTestClass:0x10f69ef78> expected to have received install, but that method has not been stubbed.
Отлично! Я решил опубликовать на S.O. а не в rspec-mocks github, потому что я решил, что делаю что-то необычное или неправильно. Хорошо знать его проблему с rspec. Стратегия expect_any_instance_of немного неудобна, но это нужно будет сделать. Благодаря! – brewster
Quick addendum: Если вы используете Mocha для mocks, он «фактически» отключит вызовы при использовании 'any_instance' – Neal