0

我正在关注 railscast #275 测试忘记密码。我无法通过电子邮件已被采取错误。使用我按照教程进行的编码,我想收到此错误,“没有标题或文本“密码”链接的错误。相反,这是我得到的,“验证失败:电子邮件已被使用(ActiveRecord: :记录无效)"

我已经进行了搜索,无法找到解决方案。

这是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

工厂.rb:

FactoryGirl.define do
  factory :user do
    sequence :email do |n| "test#{n}@example.com"
    end
    password "secret"
  end
end
4

3 回答 3

2

当我终于注意到它开始工作时,这就是我所做的。我安装了数据库清理器。然后我做了命令:

rake db:reset rake db:migrate rake db:test:prepare

之后我注意到我必须在“请求密码重置时向用户发送电子邮件”的末尾添加一个“do”。

现在我没有错误,我可以继续我的测试冒险了。感谢那些试图提供帮助的人。

于 2013-03-06T04:09:54.367 回答
0

工厂定义似乎没问题。

在运行规范之前,我首先要确保您的测试数据库是空的。可能存在现有用户记录“test1@example.com”挥之不去。另外,您是否尝试仅运行该示例?它有什么不同吗?

于 2013-03-05T17:36:18.443 回答
0

看起来在运行您的测试用例时,创建的工厂没有回滚/删除记录。

在示例执行之前添加一个before(:each)删除以前的记录

before(:each) do
User.delete_all
end
于 2013-03-05T17:39:07.980 回答