加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rspec – 引发错误时参数数量错误

发布时间:2020-12-16 19:19:47 所属栏目:百科 来源:网络整理
导读:所以在我的代码中我有这个方法我试图测试: # checks if a file already exists on S3 def file_exists?(storage_key) begin s3_resource.bucket(@bucket).object(storage_key).exists? rescue Aws::S3::Errors::Forbidden = e false end end 现在我试图制作
所以在我的代码中我有这个方法我试图测试:
# checks if a file already exists on S3
  def file_exists?(storage_key)
    begin
      s3_resource.bucket(@bucket).object(storage_key).exists?
    rescue Aws::S3::Errors::Forbidden => e
      false
    end
  end

现在我试图制作两个测试用例 – 一个用于文件存在时,一个用于何时不存在.

专注于失败案例.我想要存根存在?提出Aws :: S3 :: Errors :: Forbidden错误以便file_exists?方法将返回false.

这是我的测试代码的样子:

it "returns false if the file doesn't already exist" do
    allow_any_instance_of(Aws::S3::Object).to receive(:exists?).and_raise(
      Aws::S3::Errors::Forbidden
    )
    expect(instance.file_exists?('foo')).to be false
  end

运行此测试我看到:

wrong number of arguments (given 0,expected 2)
   # ./lib/s3_client_builder.rb:48:in `file_exists?'

真的不清楚这里发生了什么,因为file_exists?方法肯定没有2的arity也不存在?方法我是顽固的.

为了诊断这个,我在begin块中放了一个断点.我尝试运行< object> .exists?行并得到相同的错误.

解决方法

原来问题是:
and_raise(
  Aws::S3::Errors::Forbidden
)

运行此操作显示相同的错误:

raise(Aws::S3::Errors::Forbidden)

这是什么工作:

raise(Aws::S3::Errors::Forbidden.new(nil,nil))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读