首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rspec测试aasm状态转换

使用rspec测试aasm状态转换
EN

Stack Overflow用户
提问于 2016-09-01 22:06:55
回答 1查看 3.4K关注 0票数 2

我正在使用aasm gem来处理我项目中的状态转换。我有一个简单的模型,看起来像这样:

代码语言:javascript
复制
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测试转换:

代码语言:javascript
复制
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

当我运行此规范时,它返回以下错误:

代码语言:javascript
复制
 AASM::UnknownStateMachineError:
   There is no state machine with the name 'default' defined in TransferPostingBid!

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2016-12-17 23:42:57

您可以尝试使用#on方法来指定要测试的状态机:

代码语言:javascript
复制
transition_from(:offered).to(:wait_for_pap_confirmation).on_event(:pap_choosed).on(:status)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39273745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档