我目前正在开发一个 RoR 4 应用程序。
在我的应用程序中,我正在尝试实现类似于 Mickael Hartl 教程的用户测试。我想了解有关电子邮件唯一性测试的一些事情:
1 - 在实际写入数据库时测试唯一性,对吗?
以与教程中相同的方式编写测试时,效率不高。@user = User.new(...) 实际上只在内存中实例化用户。以下测试:
describe "when email address is already used" do
before do
user_with_same_email = @user.dup
user_with_same_email.save
end
it { should_not be_valid }
end
就我而言,仅当 @user = user.new(...) 指令后跟 user.save 指令时才有效。我对吗 ?
附加说明:在用户模型中实现电子邮件唯一性时,它总是失败!?!你能告诉我这个测试有什么问题吗?
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, uniqueness: true, length: { maximum: 100 }, format: { with: VALID_EMAIL_REGEX }
2 - RSPEC 真的写入 TEST 数据库吗?
运行上述测试(user.new(...) - user.save - user.dup - user.save)后,我检查了 TEST SQLite3 数据库文件的“修改日期”。运行测试时未触及。spec_hepler.rb 文件以:
ENV["RAILS_ENV"] ||= 'test'
我错过了什么 ?
谢谢您的帮助,
此致,
弗雷德