坚持已经采取的电子邮件的验证错误

时间:2013-03-05 17:16:51

标签: ruby-on-rails factory-bot

我正在跟踪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

3 个答案:

答案 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