Ruby on rails 使用Rails 4中带有间隙的夹具进行单元测试用户模型

Ruby on rails 使用Rails 4中带有间隙的夹具进行单元测试用户模型,ruby-on-rails,ruby-on-rails-4,fixtures,minitest,clearance,Ruby On Rails,Ruby On Rails 4,Fixtures,Minitest,Clearance,我正在Rails应用程序中使用身份验证。 我正在使用默认的Minitest堆栈。默认情况下,清除只使用电子邮件和密码字段,因此我添加了一个名称字段,现在我想对模型进行单元测试以进行一些检查 这是我目前为止的测试 test“不应在没有名称的情况下保存”do user=user.new user.email=”john@sample.com" user.password=“foobar” 断言\u不是user.valid? 结束 这是我的模型验证 验证:名称、状态:true 一切都很好,测试如预

我正在Rails应用程序中使用身份验证。 我正在使用默认的Minitest堆栈。默认情况下,清除只使用电子邮件和密码字段,因此我添加了一个
名称
字段,现在我想对模型进行单元测试以进行一些检查

这是我目前为止的测试

test“不应在没有名称的情况下保存”do
user=user.new
user.email=”john@sample.com"
user.password=“foobar”
断言\u不是user.valid?
结束
这是我的模型验证

验证:名称、状态:true
一切都很好,测试如预期般失败。问题是我想用一个用户装置来清理一下我的测试

一个可行的办法是

约翰: 姓名:约翰 电邮:john@sample.com 密码:foobar
但是测试执行失败,说明没有名为password的字段。实际上,该字段被称为
加密密码
。我可以使用
BCrypt::Password.create
方法创建一个,但是再次出现另一个错误,告诉我
记住\u令牌
不能为空,我怀疑
确认\u令牌
字段也会发生同样的情况。 所以我的问题是

是否有任何方法可以创建一个rails夹具来使用clearance认证库在测试中使用这些数据

更新: 为了澄清夹具示例,根据正确答案,夹具结果为:

约翰: 姓名:约翰 电邮:john@sample.com 加密密码: 记住你的令牌:

就是这样,它工作起来很有魅力。

当使用用户ActiveRecord API创建对象时,所有必需的字段都应该适当设置。不幸的是,这种情况似乎不会发生在固定装置上——或者至少不会发生在你身上(我不使用固定装置,所以我不确定)


您可以将任何必需的令牌设置为:
Clearance::Token.new
,这是Clearance用来生成令牌的工具。

是的,这是缺少的部分,现在工作正常,谢谢。