2014-06-06 15 views
46

I zmodernizowane moim rspec-rails do 3.0.1, a teraz widzę tego błędu na wszystkich moich testówOczekiwano, że odpowiedź jest prawdziwa?

Failure/Error: Sidekiq::Status::complete?(json.jid).should be_true 
    expected true to respond to `true?` 

nie mogę znaleźć rozwiązania, ani co mi brakuje.

+1

możliwy duplikat błędu rspec: błąd oczekiwany na odpowiedź \ "fałsz? \"] (Http://stackoverflow.com/questions/23937758/rspec-failing-error-expected-false-to- reply-to-false) –

Odpowiedz

92

Od rspec 3,0 be_true zostaje zmieniona na be_truthy i be_false do be_falsey

zachowanie nie uległo zmianie. Więc

(nil).should be_falsey 
(false).should be_falsey 

minie, a

(anything other than nil or false).should be_truthy 

będzie również przekazać

Z changelog 3.0.0.beta1/2013-11-07

Rename be_true and be_false to be_truthy and be_falsey. (Sam Phippen)

+36

Technicznie ta odpowiedź jest niepoprawna. rspec 3.0 'be_truthy' to nie to samo co' be true'. Jeśli naprawdę chcesz sprawdzić, czy wartość jest prawdziwa, a nie tylko prawda, powinieneś użyć 'expect (true) .to be true' (zauważ brak podkreślenia między be i true). Ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers –

+1

@LarryKyrala. Masz rację mówiąc, że "być prawdą" nie jest tym samym, co "be_truthy". Ale moja odpowiedź i pytanie OP dotyczyło 'be_true' (uwaga na obecność podkreślenia) – Santhosh

+1

Masz rację! Przykro mi, ale nie widziałem tej zmiany w dowolnym miejscu w dokumentach 3.0. Ale jest w [changelogu] (https://github.com/rspec/rspec-expectations/commit/860ca42905582549768ee0ff0837fb6c523b8199). –

1

, aby nie przepisywać wiele istniejących specyfikacji, można dodać do spec_helper (to szkodzi mojemu poczuciu harmonii, ale oszczędza czas):

+3

Łatwo jest znaleźć i wymienić tego typu rzeczy. Na przykład: 'git grep -l be_true | xargs sed -i 's/be_true/be_truthy /' ' – jonleighton