2010-09-05 1 views

Antwort

7

Sie auch actual.should be == expected verwenden können. Es hängt einfach davon ab, was Sie denken, sieht schöner aus!

21

RSpec-2 hat eine eq(expected) Matcher, die genau wie == ohne die Warnung funktioniert:

actual.should eq(expected) 
20

Verwendung:

x.should eq(42) 

Oder:

x.should be == 42 

Oder x.should == 42 bewegen, so dass es die letzte Zeile in dem es Block ist.


Für diejenigen, die denken ABER WARUM?

Ich bin eine komplette Noob Ruby, aber hier ist mein Verständnis:

Die Warnung kommt von Ruby als Aussagen wie x.should == 42 oder 1 == 1 einen Wert zurückgeben. Wenn dieser Rückgabewert nicht tatsächlich verwendet wird (z. B. einer Variablen zugewiesen, als Argument für eine Funktion verwendet oder aus dem Block zurückgegeben wird), sieht Ruby verständlicherweise keinen Sinn darin, die Anweisung an erster Stelle zu verwenden, und weist Sie darauf hin.

Um dies testen Sie irb mit dem Flag -w und fügen Sie den folgenden Code starten können:

> irb -w 

def example 
    1 == 1 
    :hello 
end 

Die 1 == 1 sollte eine Warnung über nutzlose == in leeren Kontext. Versuchen Sie es ohne die: Hallo-Zeile, und Sie werden die Warnung nicht erhalten, da 1 == 1 dann als die Rückkehranweisung verwendet würde.

Ich kenne die Op und andere hier schon verstanden. Ich wollte dies jedoch für Leute wie mich veröffentlichen, die sich vielleicht wundern, warum die Warnung ausgelöst wurde und warum die vorgeschlagenen Lösungen dieses Problem ansprachen.

+1

Dies sollte die akzeptierte Antwort für den Kontext sein. – expressions

Verwandte Themen