首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写state_machine转换回调的rspec测试

如何编写state_machine转换回调的rspec测试
EN

Stack Overflow用户
提问于 2014-02-13 09:24:14
回答 1查看 641关注 0票数 2

我有任意调整扩展

代码语言:javascript
复制
Spree::Adjustment.class_eval do
  state_machine do
    after_transition :to => :closed, :do => :some_method
  end
  def some_method
  end
end

我有rspec测试失败了。在实际应用程序中,方法被调用,所有事情都按预期工作。

代码语言:javascript
复制
describe Spree:Adjustment do 
    let(:adjustment) { create(:adjustment, state: 'open') }
    it "call some_method after close" do
      adjustment.should_receive(:some_method)
      adjustment.state = "closed"
    end
end    

失败了

代码语言:javascript
复制
 1) Spree::Adjustment call some_method after close
 Failure/Error: adjustment.should_receive(:some_method)
   (#<Spree::Adjustment:0x0000000751a340>).some_method(any args)
       expected: 1 time with any arguments
       received: 0 times with any arguments
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-13 10:15:55

如果像使用Adjustment#state=方法一样显式地设置状态,状态机转换就不能工作(在本例中)。您应该使用事件,例如:

代码语言:javascript
复制
adjustment.close
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21749928

复制
相关文章

相似问题

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