2016-09-01 6 views
1

aasm gem을 사용하여 프로젝트의 상태 전이를 처리하고 있습니다. I는 다음과 같습니다 간단한 모델을 가지고 :rspec을 사용하여 aasm 상태 전이 테스트

class TransferPostingBid < ActiveRecord::Base 
    include AASM 

    aasm :status do 
    state :offered, initial: true 
    state :wait_for_pap_confirmation 
    state :confirmed_by_pap 
    state :retracted_by_pap 

    event :pap_choosed do 
     transitions from: :offered, to: :wait_for_pap_confirmation 
    end 

    event :confirmed_by_pap do 
     transitions from: :wait_for_pap_confirmation, to: :confirmed_by_pap 
    end 

    event :retracted_by_pap do 
     transitions from: :wait_for_pap_confirmation, to: :retracted_by_pap 
    end 
    end 
end 

내가 RSpec에 매처 (matcher)에 내장 aasm로 전환을 테스트하기 위해 노력하고있어 :

require 'rails_helper' 

describe TransferPostingBid, type: :model do 
    describe 'state transitions' do 
    let(:transfer_posting_bid) { TransferPostingBid.new } 

    it 'has default state' do 
     expect(transfer_posting_bid).to transition_from(:offered).to(:wait_for_pap_confirmation).on_event(:pap_choosed) 
    end 
    end 
end 

나는 그것이 오류 다음 날 반환이 스펙을 실행하면 :

AASM::UnknownStateMachineError: 
    There is no state machine with the name 'default' defined in TransferPostingBid! 

어떻게 해결할 수 있습니까?

답변

2

당신은 테스트중인 상태 머신 지정하여 #on 방법을 사용하여 시도 할 수 있습니다 :

transition_from(:offered).to(:wait_for_pap_confirmation).on_event(:pap_choosed).on(:status)