0

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

expect(violate_guard).to raise_exception

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

失败/错误:expect(my_model.change_event).to raise_exception AASM::InvalidTransition:事件“change_event”无法从“current_state”转换

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

4

2 回答 2

2

你可以试试:

expect { violate_guard }.to raise_error

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

于 2014-08-30T16:36:06.063 回答
1

我不太明白。如果你想要一个方法来包装转换冲突,你必须在规范中定义一个方法

def violate_guard
  job = Job.new
  job.run ## <= invalid transition
end

然后你使用规范中的方法

expect { violate_guard }.to raise_error
于 2014-08-31T00:52:29.590 回答