我在我的 Rails 应用程序中使用Clearance进行身份验证。我正在使用默认的 Minitest 堆栈。默认情况下,清除仅使用电子邮件和密码字段,因此我添加了一个name
字段,现在我想对模型进行单元测试以进行一些检查。
这是我到目前为止的测试。
test "should not save without name" do
user = User.new
user.email = "john@sample.com"
user.password = "foobar"
assert_not user.valid?
end
这是我的模型验证。
validates :name, presence: true
一切正常,测试按预期失败。问题是我想使用用户夹具来清理我的测试。
一种可行的方法可能是
john:
name: John
email: john@sample.com
password: foobar
但是随后测试执行失败,说没有名为密码的字段。确实该领域被称为encrypted_password
。我可以使用该BCrypt::Password.create
方法创建一个,但再次出现另一个错误,告诉我remember_token
不能为空,我怀疑该confirmation_token
字段也会发生同样的情况。所以我的问题是。
有什么方法可以创建一个 rails 夹具来使用许可认证库在我的测试中使用这些数据?
更新: 由于正确答案,为了澄清夹具示例,结果夹具是:
john:
name: John
email: john@sample.com
encrypted_password: <%= BCrypt::Password.create("foobar", cost: 4) %>
remember_token: <%= Clearance::Token.new %>
就是这样,它就像魅力一样。