Die vom Learn Rails by example book kommt:Testing ungültige E-Mails mit Rspec
describe "when email format is invalid" do
it "should be invalid" do
addresses = %w[[email protected],com user_at_foo.org [email protected]
[email protected]_baz.com [email protected]+baz.com]
addresses.each do |invalid_address|
@user.email = invalid_address
@user.should_not be_valid
end
end
Ich bin ein Anfänger in Rspec. Früher gab es wie folgt ein Code:
describe "when email is not present" do
before { @user.email = " " }
it { should_not be_valid }
end
Also ich frage mich, warum der Autor nicht den obigen Code wie folgt geschrieben hat:
describe "when email format is invalid" do
before do
addresses = %w[[email protected],com user_at_foo.org [email protected]
[email protected]_baz.com [email protected]+baz.com]
@user.email = invalid_address
addresses.each do |invalid_address|
@user.email = invalid_address
end
end
it { should_not be_valid }
end
OK, vielleicht ist dieser Code falsch. Aber im Grunde frage ich, warum der Autor nicht before
vor it
verwendet oder die address
Variable vor it
setzen? (Wie er im vorigen Beispiel tat)
EDIT:
Er tut auch etwas ähnliches in einem weiteren Beispiel:
describe "when email address is already taken" do
before do
user_with_same_email = @user.dup
user_with_same_email.email = @user.email.upcase
user_with_same_email.save
end
it { should_not be_valid }
end
Vielen Dank! Es ist jetzt alles klar. – alexchenco
Gut, herzlich willkommen! –