2

我正在尝试为我的 Rails 应用程序设置测试。我正在使用 Factory Girl 和 Rspec 与 Sorcery 进行身份验证。由于某种原因,此测试未通过:

describe "User" do
  it "has a valid the factory" do
    user = FactoryGirl.create(:user)
    user.should be_valid 
  end
end

但是这个可以:

describe "User" do
  it "has a valid the factory" do
    user = FactoryGirl.build(:user)
    user.should be_valid 
  end
end

失败测试的错误表示密码与其确认不匹配,因此这似乎与 Sorcery 处理密码加密的方式有关。

有没有其他人遇到过这个问题?它与巫术如何加密密码有关吗?是故意的,还是bug?

4

2 回答 2

2

build是有效的,因为构建的对象确实是一个有效的对象,尽管只存在于内存中。

create无效,因为失败save

保存失败的原因,我觉得应该是Activation的问题。我没有巫术经验,但只有设计,原理相似。根据其自述文件,Sorcery 似乎默认要求激活。

通过在创建后添加一个激活钩子,可以很容易地直接在工厂定义中修复它。

FactoryGirl.define do
  factory :user do
    # other fields
    after(:create) { |user| user.activate! }
  end
end
于 2013-05-18T03:56:43.630 回答
0

好的,您必须将用户定义添加到 FactoryGirl:

factory :user do
  ...
  password "foobar"
  password_confirmation "foobar"
end

你的模型看起来像:

class User < ActiveRecord::Base
  authenticates_with_sorcery!
  validates :password, confirmation: true  
  validates :password_confirmation, presence: true
end

它绝对有效。

没有激活或加密。

于 2014-07-25T07:15:34.337 回答