gpt4 book ai didi

ruby-on-rails - 使用 rspec 测试 aasm 状态转换

转载 作者:行者123 更新时间:2023-12-02 15:17:50 25 4
gpt4 key购买 nike

我正在使用 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!

我该如何解决这个问题?

最佳答案

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

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

关于ruby-on-rails - 使用 rspec 测试 aasm 状态转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com