2015-01-15 2 views
6

dieses Beispiel betrachten, würden wir prüfen gerne, ob es für den Benutzer leer Namen zu haben erlaubt ist (es sollte nicht sein):Warum 'assert_not' und nicht '!' beim Schreiben von Rails-Tests?

test "name should be present" do 
    @user.name = "  " 
    assert_not @user.valid? 
end 

Die Frage ist, warum gibt es nicht assert_not? Wäre es nicht besser, wenn wir nur assert wie folgt verwenden:

test "name should be present" do 
    @user.name = "  " 
    assert [email protected]? 
end 

Antwort

3

Es ist wahrscheinlich Modifikatoren von Ihren Behauptungen entfernen besteht, die ihre Ergebnisse ändern oder verschleiern, was Sie fragen tatsächlich. In Wirklichkeit ist es meistens eine Stilwahl.

Es ist eine Art der gleichen Motivation für unless in der Sprache, die, statt zu schreiben dies:

if [email protected]? 
    # do stuff 
end 

Sie tun würde:

unless @user.valid? 
    # do stuff 
end 

Zugegeben, die, wenn/es sei denn Unterschiede lesen Weg besser als assert_not, ach das ist, was Minitest Komponententests bekommen Sie. Wenn Sie möchten, dass Dinge natürlicher lesen, werfen Sie einen Blick auf Minitest-Spezifikationen oder RSpec.

Verwandte Themen