2016-07-27 2 views
1

В одном из моих тестов я заметил, что у меня была опечатка для проверки ответа, expect(response).to be_succes вместо expect(response).to be_success. Тест прошел. Почему тест все еще прошел?Rspec: be_succes (not be_success) проходит

response.succes? возвращается:

Failure/Error: response.succes? 
    NoMethodError: 
     undefined method `succes?' for #<ActionController::TestResponse:0x007fe6e22a2530> 
+0

Вы на 100% уверены? Можете ли вы вставить файл rspec? – aBadAssCowboy

+0

Возможно, сделать более очевидную опечатку типа 'be_sssss' и посмотреть – aBadAssCowboy

+0

@aBadAssCowboy Я сделал, я попробовал be_succe и be_successssss, и они оба потерпели неудачу. Файл, включая имя файла, в порядке. Я также тестировал это в других файлах в своем приложении, а также передавал be_succes. Благодарю. –

ответ

1

У меня был chat с ребятами в RSpec об этой проблеме, и оказывается, что это несколько намеренной операция и обусловлено present_tense_predicate и predicate методов в RSpec: https://github.com/rspec/rspec-expectations/blob/master/lib/rspec/matchers/built_in/be.rb#L248 ,

В результате поднятия этой проблемы было предложено удалить эту проблему в RSpec 4: https://github.com/rspec/rspec-expectations/issues/935.

+0

Это определенно хорошо, чтобы отметить свой собственный ответ, как принято. –

+1

@PaulFioravanti Просто пришлось немного подождать. –