Ruby on rails 使用Rails 4中带有间隙的夹具进行单元测试用户模型
我正在Rails应用程序中使用身份验证。 我正在使用默认的Minitest堆栈。默认情况下,清除只使用电子邮件和密码字段,因此我添加了一个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 一切都很好,测试如预
名称字段,现在我想对模型进行单元测试以进行一些检查
这是我目前为止的测试
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用来生成令牌的工具。是的,这是缺少的部分,现在工作正常,谢谢。