2014-06-06 6 views
46

Ich verbesserte meine rspec-rails auf 3.0.1 und nun diesen Fehler zu sehen, auf alle meine Testserwartet wahr, um auf wahr zu antworten?

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

ich nicht die Lösung, die ich bin finden noch, was mir fehlt.

+1

mögliches Duplikat von [rspec failing error: expected false reagiert auf \ 'false? \ '] (Http://stackoverflow.com/questions/23937758/rspec-failing-error-expected-false-to- antwort auf falsch) –

Antwort

92

Von rspec 3.0 be_true wird umbenannt in be_truthy und be_false-be_falsey

Das Verhalten hat sich nicht geändert. So

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

wird passieren, und

(anything other than nil or false).should be_truthy 

auch

Vom changelog 3.0.0.beta1/2013-11-07

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

+36

Technisch ist diese antwort falsch. rspec 3.0 'be_truthy' ist nicht dasselbe wie' sei wahr'. Wenn Sie wirklich überprüfen möchten, ob der Wert wahr ist und nicht nur truthy, dann sollten Sie 'expect (true) .to true' verwenden (beachten Sie das Fehlen eines Unterstrichs zwischen be und true). Ref: https://www.relishapp.com/rspec/rspec-expections/docs/built-in-matcher –

+1

@LarryKyrala. Sie haben recht, wenn Sie "Sei wahr" und nicht "gleich" sind. Aber meine Antwort und die Frage des OP war über 'be_true' (beachten Sie das Vorhandensein eines Unterstrichs) – Santhosh

+1

Sie sind richtig, Herr! Es tut mir leid, ich habe das nirgendwo in den 3.0-Dokumenten erwähnte Umbenennen gesehen. Aber es ist in der [changelog] (https://github.com/rspec/rspec-expections/commit/860ca42905582549768ee0ff0837fb6c523b8199). –

1

Um nicht neu zu schreiben viele bestehenden Spezifikationen passieren wird, können Sie diese hinzufügen können spec_helper (es schadet meinem Sinn für Harmonie aber spart Zeit):

def true.true? 
    true 
end 

def true.false? 
    false 
end 

def false.true? 
    false 
end 

def false.false? 
    true 
end 
+3

Es ist einfach, solche Dinge zu finden und zu ersetzen. Zum Beispiel: 'git grep -l be_true | xargs sed -i 's/be_true/be_truthy /' ' – jonleighton

Verwandte Themen