Как заставить мой тест провалиться, если метод не существует, используя rspe c? - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть приложение 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 должен потерпеть неудачу, если я пытаюсь вызвать метод, который не существует. Однако я не уверен, как настроить тест по-другому, чтобы это произошло.

...