2017-05-05 1 views
0

에서 실행 테스트 RSpec에 사용 방법 :ApplicationJob 내가 콜백에 작업을 실행하는 모델이 콜백

모델/message.rb가 :

class Message < ApplicationRecord 

    validates :text, presence: true 

    after_create_commit { MessageBroadcastJob.perform_later self } 

end 

일자리/message_broadcast_job.rb가 우는 소리입니다 이 데이터베이스에 지속 된 후에는 기본적으로 화면에 새 메시지를 렌더링 : 나는 그것을 만들 때

class MessageBroadcastJob < ApplicationJob 
    queue_as :default 

    def perform(message) 
    ActionCable.server.broadcast 'room_channel', message: render_message(message) 
    end 

    private 
    def render_message(message) 
     ApplicationController.renderer.render(
     partial: 'messages/message', 
     locals: { message: message } 
    ) 
    end 
end 

는 레일은 테스트를위한 사양/작업/message_broadcast_job_spec.rb를 만들었습니다. 이 파일에서 작업을 테스트하려면 어떻게해야하고 내 콜백 모델에서 메시지 모델 (spec/models/message_spec.rb)이 작업을 올바르게 호출하는지 테스트하는 방법은 무엇입니까?

답변

0

Message이 을 사용하여 MessageBroadcastJob으로 전화하는지 테스트 할 수 있습니다.

봅니다 테스트에서 같은 것을 할 수 있습니다 :

message_broadcast_job_class = class_double("MessageBroadcastJob").as_stubbed_const 
expect(message_broadcast_job_class).to receive(:perform_later).with(message)