2016-04-03 8 views
0

Ich bin Michael Hartl Ruby on Rails-Tutorial folgen. Ich beobachte, dass er Minitest verwendet hat, um seine Tests durchzuführen. Ich benutze RSpec. Nachfolgend finden Sie eine Zeile Code aus dem Tutorial ich mit RSpec replizieren wollenWas ist die RSpec-Syntax entspricht für Assert (Minitest)

test "email validation should accept valid addresses" do 
    valid_addresses = %w[[email protected] [email protected] [email protected] 
        [email protected] [email protected]] 
    valid_addresses.each do |valid_address| 
    @user.email = valid_address 
    assert @user.valid?, "#{valid_address.inspect} should be valid" 
    end 
end 

Dies ist, wie ich dies mit RSpec zu tun.

it "email validation should accept valid addresses" do 
    valid_addresses = ["[email protected]", "[email protected]", "[email protected]", 
        "[email protected]", "[email protected]"] 
    valid_addresses.each do |valid_address| 
    user.email = valid_address 
    expect(@user.valid?).to be true, "#{valid_address.inspect} is not correct" 
    end 
end 

Allerdings bekomme ich Argument Fehler, wenn ich diesen Test ausführen. Es scheint, dass RSpec in Testfällen nur ein Argument erwartet.

Antwort

0

RSpec denkt, dass Sie ein einziges Argument an die to Methode und zwei Argumente an die be Methode vorbei sind, und somit einen Fehler es gibt. Es ist zu sehen, Ihre Aussage:

expect(@user.valid?).to(be(true, "#{valid_address.inspect} is not correct")) 

So können Sie Ihre spec ändern, die folgenden werden, und es sollte funktionieren:

expect(@user.valid?).to be(true), "#{valid_address.inspect} is not correct" 

Hier RSpec sieht zwei Argumente an die to Methode übergeben werden , das ist gültig.

0

Was genau ist die Fehlermeldung, die Sie bekommen. Es sieht so aus, als ob du einen Tippfehler hast. Sollte

user.email = valid_address 

sein
@user.email = valid address 

Sie bietet zwei Argumente und die erwarten Erklärung nimmt man.

expect(@user.valid?).to be true 
+0

Das ist ein Tippfehler @ margo, '' 'user''' sollte' '' @ user''' sein. Die Fehlermeldung lautet: '' 'ArgumentError: falsche Anzahl von Argumenten (gegeben 2, erwartete 1)' '' –