[英]Rails code validation working but Rspec tests failing
誰能看到Rspec的問題嗎? 我所有對無效電子郵件的測試都失敗了(即,應該認為它們無效,但是在Rspec中是某種方式),但是在實際代碼中,它可以正常工作,不允許出現不良電子郵件。 驗證甚至可以在我的控制台中使用。
兩個注意事項:
型號代碼
validate :create_validation, on: :create
def create_validation
errors[:base] << "Please enter a valid email address to continue" if self.email.blank? || (( /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i =~ self.email) == nil)
end
#The RegEx is from Michael Hartl's tutorial
規格代碼
describe Signup do
before do
@signup = FactoryGirl.create(:signup)
end
subject { @signup }
describe "email tests" do
describe "invalid tests" do
# blank email
before { @signup.email = " " }
it { should_not be_valid }
# invalid format email
addresses = %w[user@foo..com, user@foo,com user_at_foo.org example.user@foo. foo@bar_baz.com foo@bar+baz.com]
addresses.each do |invalid_address|
before { @signup.email = invalid_address }
it { should_not be_valid }
end
end
end
end
規范助手中的工廠女孩代碼
FactoryGirl.define do
factory :signup do |f|
f.email { Faker::Internet.email }
#... other attributes
end
結束
據我了解,您只能在創建時驗證代碼! 但是在測試中,您在before塊中創建了對象,並將其保留在測試中-因此跳過了驗證。
試試這個變體
describe Signup do
before do
@signup = FactoryGirl.build(:signup)
end
subject { @signup }
describe "email tests" do
describe "invalid tests" do
# blank email
before { @signup.email = " " }
it { should_not be_valid }
# invalid format email
addresses = %w[user@foo..com, user@foo,com user_at_foo.org example.user@foo. foo@bar_baz.com foo@bar+baz.com]
addresses.each do |invalid_address|
before { @signup.email = invalid_address }
it { should_not be_valid }
end
end
end
end
我希望將為已建立但未保存的記錄觸發驗證。
PS或者您可以刪除以下選項on: :create
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.