如何使用rspec测试assm guard错误?

时间:2014-08-30 16:20:25

标签: ruby-on-rails ruby-on-rails-4 rspec rspec3 aasm

我有一个带有一些防护装置的状态机来防止特殊的状态转换。 在我的规范中,我试图期待这样的防范违规错误:

expect(violate_guard).to raise_exception

因此,我在规范测试中收到了正确的错误:

  

失败/错误:期望(my_model.change_event).to raise_exception        AASM :: InvalidTransition:          活动' change_event'无法转换为' current_state'

我想知道如何更改规格以获得满意的测试?

2 个答案:

答案 0 :(得分:2)

你可以尝试:

expect { violate_guard }.to raise_error

http://rubydoc.info/gems/rspec-expectations/frames

答案 1 :(得分:1)

我不太了解。 如果希望方法包装转换违规,则必须在规范

中定义方法
def violate_guard
  job = Job.new
  job.run ## <= invalid transition
end

然后你使用spec中的方法

expect { violate_guard }.to raise_error