我正在跟踪railscast#275并测试忘记密码。我遇到麻烦越过电子邮件已经被误认为。通过遵循本教程的编码,我想收到此错误,“错误没有链接标题或文本”密码“。相反,这是我得到的,”验证失败:电子邮件已被采取(ActiveRecord: :RecordInvalid)“
我做了搜索,无法找到解决方案。
这是password_resets_spec.rb:
require 'spec_helper'
describe "PasswordResets" do
it "emails user when requesting password reset"
user = FactoryGirl.create(:user)
visit login_path
click_link "password"
fill_in "Email", :with => user.email
click_button "Reset Password"
end
factories.rb:
FactoryGirl.define do
factory :user do
sequence :email do |n| "test#{n}@example.com"
end
password "secret"
end
end
答案 0 :(得分:2)
这是我在最终注意到它开始工作时所做的事情。我安装了数据库清理然后我做了命令:
rake db:reset rake db:migrate rake db:test:prepare
之后我注意到在请求密码重置时,我必须在“it”电子邮件用户的末尾添加“do”。
现在我没有错误,我可以继续我的测试冒险。感谢那些试图提供帮助的人。
答案 1 :(得分:0)
工厂定义似乎没问题。
我首先要确保在运行规范之前测试数据库是空的。可能存在现有的用户记录“test1@example.com”。另外,你试过只运行那个例子吗?这有什么不同吗?
答案 2 :(得分:0)
在运行测试用例时看起来,创建的工厂没有回滚/删除记录。
在示例执行之前添加before(:each)
删除以前的记录
before(:each) do
User.delete_all
end