Я пытаюсь проверить действие уничтожения, которое имеет условное выражение, оно работает нормально, если я просто называю бизнес без таких параметров:
def destroy
if @message_rule.destroy
Messages::Reclassifier.call
end
Но если я делаю это так:
def destroy
if @message_rule.destroy
Messages::Reclassifier.call(allowed_params[:message])
end
Это возвращает мне эту ошибку:
Failures:
1) MessageRulesController#destroy When the message_rule has been destroyed classifies the messages
Failure/Error: expect(Messages::Reclassifier).to have_received(:call)
(Messages::Reclassifier (class)).call(*(any args))
expected: 1 time with any arguments
received: 0 times with any arguments
# ./spec/controllers/message_rules_controller_spec.rb:108:in `block (4 levels) in <top (required)>'
Это спец. c:
describe '#destroy' do
let(:message_rule) { build_stubbed(:message_rule) }
before do
allow(Messages::Reclassifier).to receive(:call)
allow(MessageRule).to receive(:find).
with(message_rule.id.to_s).
and_return(message_rule)
end
subject(:destroy) { delete :destroy, params: { id: message_rule.id } }
context 'When the message_rule has been destroyed' do
before { allow(message_rule).to receive(:destroy).and_return(true) }
it 'classifies the messages' do
destroy
expect(Messages::Reclassifier).to have_received(:call)
end
end
context 'When the message_rule couldn\'t be destroyed' do
before { allow(message_rule).to receive(:destroy).and_return(false) }
it 'does not reclassify the messages' do
destroy
expect(Messages::Reclassifier).not_to have_received(:call)
end
end
end
Что-то не так, что я делаю в спецификации? Я неопытный с RSpe c, поэтому мне трудно понять эту ошибку