gpt4 book ai didi

ruby-on-rails - 使用 Mocha Rails 的带有命名空间对象的 stub 实例

转载 作者:行者123 更新时间:2023-11-28 21:31:25 24 4
gpt4 key购买 nike

我正在使用带有测试单元的 Mocha 库。 https://github.com/freerange/mocha

这是我的 Controller Action

def update_purchase_state
current_state = @purchase.aasm_state
@purchase.update_attribute :aasm_state, params[:purchase_state]
flash[:notice] = "successfully update the purchase state from '#{current_state}' to '#{params[:purchase_state]}'"
redirect_to home_admin_purchase_editor_path(purchase_id: @purchase)
end

这是我的 Controller 测试

should "update the purchase's state" do
PurchaseEditor::Purchase.any_instance.expects(:aasm_state).returns("paid")
PurchaseEditor::Purchase.any_instance.expects(:update_attribute)
post :update_purchase_state, purchase_id: "1", purchase_state: "refunded"
assert_response 200
assert_match /successfully update the purchase state/, flash[:notice]
end

我收到的错误是 nil 类的 undef 方法 aasm_state。我很困惑,因为我以为我是在用 .any_instance 来模拟它。我也尝试过 .stubs,但没有成功。

最佳答案

.any_instance 将适用于 Purchase 的实例,但 @purchase 不是 Purchase 的实例。在这种情况下它是 nil。您需要解决在 Controller 中分配 @purchase 的位置,或者您需要自己从规范中人为分配它。

关于ruby-on-rails - 使用 Mocha Rails 的带有命名空间对象的 stub 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664411/

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