【发布时间】:2013-12-18 17:18:41
【问题描述】:
我正在使用带有测试单元的 Mocha 库。 https://github.com/freerange/mocha
这是我的控制器操作
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
这是我的控制器测试
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,但没有运气。
【问题讨论】:
标签: ruby-on-rails testing mocking mocha.js