Тестирование обратного вызова ресурса Rails JSON API - PullRequest
0 голосов
/ 02 июля 2018

Как мне выполнить модульное тестирование, чтобы мой обратный вызов ресурса JSON API был зарегистрирован как after_create, и что вызывается send_notifications, и я могу expect(MyMailer).to receive(:welcome_email)?

Когда я пытаюсь allow & expect MyResource # send_notifications или MyMailer.welcome_email, их звонки не отслеживаются.

    class MyResource < BaseResource

      after_create :send_notifications

      def send_notifications
        MyMailer.welcome_email(_model).deliver
      end
    end


    # rspec

    RSpec.describe Creem::Jpi::V1::MyResourceResource, type: :resource do
      include JsonApiResourceHelpers

      let(:my_resource) { create(:my_resource) }
      subject { described_class.new(my_resource, {}) }

      it { expect(described_class).to be < BaseResource }

      describe 'callbacks' do
        xit 'how do I unit test my callbacks?'
      end
    end

1 Ответ

0 голосов
/ 02 июля 2018

Я решил это путем функционального тестирования почтовой программы.

Это можно сделать, добавив тестовый пример в спецификацию контроллера для действия контроллера, которое вызовет обратный вызов ресурса.

    RSpec.describe MyResourceController, type: :controller do
      describe 'POST #create' do
        subject { post :create, params: { data: data } }

        it 'sends new notifications' do
          expect { subject }.to change { ActionMailer::Base.deliveries.size }.by(1)
        end
      end
    end
...