2015-10-10 13 views
5

thử nghiệm của tôi trông như thế này:RSpec kiểm tra raise_error thất bại mặc dù phương pháp này đặt ra một lỗi

it 'does return an error when passing a non-subscription or trial membership' do expect(helper.description_for_subscription(recurring_plan)).to raise_error(RuntimeError) end

Phương pháp của tôi trở lại này:

fail 'Unknown subscription model type!'

Tuy RSpec trở lại với thất bại này tin nhắn:

Failure/Error: expect(helper.description_for_subscription(recurring_plan)).to raise_error(RuntimeError) RuntimeError: Unknown subscription model type!

Điều gì đang diễn ra ??

Trả lời

6

Bạn nên quấn kỳ vọng trong một khối, sử dụng {} thay vì ():

expect{ 
    helper.description_for_subscription(recurring_plan) 
}.to raise_error(RuntimeError) 

Kiểm tra lỗi Mong phần here

+0

Wow Tôi không thể tin rằng làm việc. Tại sao điều đó lại tạo nên sự khác biệt? Tất cả các thử nghiệm khác của tôi đều sử dụng mong đợi() và tất cả chúng đều hoạt động. Cảm ơn, bằng cách này! –

+0

Cách tôi nghĩ về nó là khi bạn đang thử nghiệm một giá trị, chẳng hạn như 'mong đợi (a) == b', bạn sử dụng'() '. Khi bạn đang kiểm tra kết quả của một giao dịch, bạn sử dụng một khối với '{}'. Điều này chủ yếu được sử dụng để thử nghiệm ** gây ra lỗi ** hoặc ** thay đổi quan sát **. Kiểm tra tài liệu tôi đưa vào câu trả lời – AbM

Các vấn đề liên quan