2014-08-30 76 views
0

我有一个状态机与一些警卫,以防止特殊的状态转换。 在我的天赋,我想指望后卫冲突错误是这样的:如何用rspec测试assm guard错误?

expect(violate_guard).to raise_exception 

其结果是,我收到我的规格测试正确的错误:

Failure/Error: expect(my_model.change_event).to raise_exception AASM::InvalidTransition: Event 'change_event' cannot transition from 'current_state'

我不知道应该怎么我改变我的规格以获得满意的测试?

回答

1

我不明白很好。 如果你想有一个方法来包装过渡违规行为,必须在规范

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

定义一个方法,那么你在规格

expect { violate_guard }.to raise_error 
+0

真棒!你的回答不是答案,但是你的语法错误打开了我的眼睛!'期望{violate_guard)'大括号和右括号!我应该使用'{}'将方法传递给'expect' – 2014-08-31 06:08:06

+0

oops ... hehehe。 – Armando 2014-08-31 12:41:34