У меня есть приложение Rails 5. Я создал этот рабочий класс
. Класс PrinterWorker включает Sidekiq :: Worker
def perform
...
service = PrinterService.new(args)
service.printtt
...
end
. Я использую rspe c для модульного тестирования моего работника. У меня есть эти спецификации ...
RSpec.describe PrinterWorker, :type => :worker do
context "#perform" do
let(:printer_service) { instance_double("PrinterService") }
...
context "calls perform successfully" do
before do
...
allow(PrinterService).to receive(:new).and_return(printer_service)
allow(printer_service).to receive(:printtt)
...
subject.perform
end
it "makes proper service calls" do
...
expect(printer_service).to have_received(:printtt).once
end
Проблема, которую я обнаружил, заключается в том, что если у службы "PrinterService" нет метода "printtt", эта операция c будет проходить очень хорошо. Это кажется мне неправильным. Я чувствую, что spe c должен потерпеть неудачу, если я пытаюсь вызвать метод, который не существует. Однако я не уверен, как настроить тест по-другому, чтобы это произошло.