Ruby on rails 为什么RSpec抛出InvalidSignature错误?
我是Ruby、Rails和TDD的新手,在代码测试中遇到了麻烦。 我试图测试一个配方模型的创建,该模型由一个使用FactoryBot创建的用户发布 我的配方模型(app/models/Recipe.rb)是: 此测试失败,错误为:Ruby on rails 为什么RSpec抛出InvalidSignature错误?,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我是Ruby、Rails和TDD的新手,在代码测试中遇到了麻烦。 我试图测试一个配方模型的创建,该模型由一个使用FactoryBot创建的用户发布 我的配方模型(app/models/Recipe.rb)是: 此测试失败,错误为: Failures: 1) Recipe Creating a Recipe should be permitted Failure/Error: expect(recipe).to be_valid ActiveSupport::MessageVerifier
Failures:
1) Recipe Creating a Recipe should be permitted
Failure/Error: expect(recipe).to be_valid
ActiveSupport::MessageVerifier::InvalidSignature:
ActiveSupport::MessageVerifier::InvalidSignature
# ./spec/models/recipe_spec.rb:16:in `block (3 levels) in <top (required)>'
Finished in 0.35273 seconds (files took 7.93 seconds to load)
7 examples, 1 failure
Failed examples:
rspec ./spec/models/recipe_spec.rb:5 # Recipe Creating a Recipe should be permitted
故障:
1) 配方应允许创建配方
失败/错误:预期(配方)。有效
ActiveSupport::MessageVerifier::InvalidSignature:
ActiveSupport::MessageVerifier::InvalidSignature
#./spec/models/recipe_spec.rb:16:in'block(3层)in'
完成时间为0.35273秒(文件加载时间为7.93秒)
7例,1例失败
失败的示例:
rspec./spec/models/recipe_spec.rb:5#应允许创建配方
为什么会出现这个错误?它意味着什么
recipe = Recipe.new(title: 'Recipe',
preparazione: 'Preparation',
image: Rack::Test::UploadedFile.new('spec/support/test_image.jpg', 'image/jpg')),
user_id: @user.id,
n_likes: 0,
n_comments: 0,
created_at: Time.now.utc)
在Rspec中使用上载附件
在Rspec中使用上载附件。向我们显示
配方
模型类代码,请expect(配方)。要有效
调用方法:valid?
on配方
。反过来,它将运行您在模型上定义的任何rails验证。因此,您代码中的某些内容(您没有向我们展示)将引发该异常作为验证流程的一部分。在app/models/recipe.rb
中有什么内容?您定义了哪些验证?特别是,引用ActiveSupport::MessageVerifier
的代码在哪里?看起来相关:对,如果我删除模型中图像的验证,测试成功。但是,我仍然希望有所需的图像。我可以在RSpec测试中上传图像吗?请向我们展示配方
模型类代码,请expect(配方)。要有效
调用方法:valid?
on配方
。反过来,它将运行您在模型上定义的任何rails验证。因此,您代码中的某些内容(您没有向我们展示)将引发该异常作为验证流程的一部分。在app/models/recipe.rb
中有什么内容?您定义了哪些验证?特别是,引用ActiveSupport::MessageVerifier
的代码在哪里?看起来相关:对,如果我删除模型中图像的验证,测试成功。但是,我仍然希望有所需的图像。我可以在RSpec测试中上传一个图像吗?它与image:Rack::test::UploadedFile.new(Rails.root.join('spec/support/test\u image.jpg'),'image/jpg')一起工作。
谢谢!更新了答案Rack::Test::UploadedFile.new('spec/support/Test_image.jpg','image/jpg'))
这也应该可以。它与image:Rack::Test::UploadedFile.new(Rails.root.join('spec/support/Test_image.jpg'),'image/jpg')一起工作。
谢谢!更新了答案Rack::Test::UploadedFile.new('spec/support/Test_image.jpg','image/jpg'))
。
Failures:
1) Recipe Creating a Recipe should be permitted
Failure/Error: expect(recipe).to be_valid
ActiveSupport::MessageVerifier::InvalidSignature:
ActiveSupport::MessageVerifier::InvalidSignature
# ./spec/models/recipe_spec.rb:16:in `block (3 levels) in <top (required)>'
Finished in 0.35273 seconds (files took 7.93 seconds to load)
7 examples, 1 failure
Failed examples:
rspec ./spec/models/recipe_spec.rb:5 # Recipe Creating a Recipe should be permitted
recipe = Recipe.new(title: 'Recipe',
preparazione: 'Preparation',
image: Rack::Test::UploadedFile.new('spec/support/test_image.jpg', 'image/jpg')),
user_id: @user.id,
n_likes: 0,
n_comments: 0,
created_at: Time.now.utc)