我正在使用aasm gem来处理我项目中的状态转换。我有一个简单的模型,看起来像这样:
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匹配器中的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!我该如何解决这个问题呢?
发布于 2016-12-17 23:42:57
您可以尝试使用#on方法来指定要测试的状态机:
transition_from(:offered).to(:wait_for_pap_confirmation).on_event(:pap_choosed).on(:status)https://stackoverflow.com/questions/39273745
复制相似问题