2014-08-30 2 views
0

У меня есть машина состояний с некоторыми охранниками, чтобы предотвратить особые переходы состояния. В моей спецификации, я пытаюсь ожидать сторожевую ошибку нарушения, как это:Как проверить ошибку защиты assm с помощью rspec?

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

Awesome! Ваш ответ не был ответом, однако ваш синтаксический код открыл мои глаза! 'Ожидать {violate_guard)' открывать скобки и закрывать круглые скобки! Я должен использовать '{}' для передачи метода 'ожидать' –

+0

oops ... hehehe. – Armando