У меня есть ожидание в RSpec, которое установлено в блоке before
:
context 'my_context' do
before :each do
expect(Net::HTTP).to receive(:new).at_least(:once)
end
it_behaves_like MyClient
end
Однако я только что добавил фрагмент кода, который означает, что Net::HTTP
не не получите это сообщение в одном конкретном случае.(Примечание: блок shared_examples
уже на месте.)
shared_examples MyClient do
it 'new code returns a 404 before creating a Net::HTTP' do
# I want to remove the expectation here
trigger_the_new_use_case
expect(response).to be_not_found
end
it 'does other stuff'
end
Я попытался добавить эту строку, чтобы переопределить ожидание:
expect(Net::HTTP).not_to receive(:new)
... но он просто добавляет другое ожидание;оригинальный все еще там, и все еще не работает.
Я не могу понять, как использовать метаданные, чтобы сделать это, если это возможно.Я пытался разделить блок before
:
before :each do
other_setup_stuff
end
before :each, wont_create_net_http: false do
# I had hoped that `false` would act as a default value - I can't specify it in
# hundreds of other tests - but it didn't. `nil` didn't either.
expect(Net::HTTP).to receive(:new).at_least(:once)
end
before :each, wont_create_net_http: true do
# This one worked OK
expect(Net::HTTP).not_to receive(:new)
end
it 'new spec', :wont_create_net_http do
run_the_spec
end
Как я могу удалить, заменить или отключить ожидание для моей новой спецификации?