我正在尝试为我的 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 处理密码加密的方式有关。
还有其他人遇到过这个问题吗?这与 Sorcery 如何加密密码有关吗?这是故意的还是错误?
最佳答案
build
是有效的,因为构建的对象确实是一个有效的对象,尽管仅存在于内存中。
由于保存
失败,创建
无效。
保存失败的原因我想应该是Activation的问题。我没有巫术经验,只有设计经验,原理是相似的。根据其自述文件,Sorcery 似乎默认要求激活。
通过在创建后添加激活钩子(Hook),可以很容易地直接在工厂定义中修复它。
FactoryGirl.define do
factory :user do
# other fields
after(:create) { |user| user.activate! }
end
end
关于ruby-on-rails - 为什么 FactoryGirl( :build) work with Sorcery, 而不是 FactoryGirl( :create)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617717/