【问题标题】:Rspec: expect file to exist with wildcardRspec:期望文件存在通配符
【发布时间】:2015-11-25 22:38:33
【问题描述】:

我正在使用 Rspec 测试文件是否已保存。我可以保证它有,就像在 Finder 等中一样,但是我的测试失败了:

it 'saved a low resolution file' do
  expect(File).to exist("#{Rails.root}/public/files/low_resolution_#{id}_*")
end

我不能在那里使用通配符吗?我错过了什么?

【问题讨论】:

  • 通配符不是文件...而且测试很脆弱,因为它不能保证您目标的确切文件存在。使用实际文件名进行测试怎么样?
  • 简而言之,因为它很复杂。这里的通配符只会忽略文件末尾的 MD5 字符串,在这个应用程序中传输它可能比它的价值更多。
  • 随着测试套件的增长,调试起来会变得很困难。 @fl00r 的解决方案有效,但测试仍然很脆弱。您可能会遇到的问题是,当您添加的测试也需要这些文件上的某些内容时。请记住,这个测试似乎有副作用(嗯,这也取决于套件的作用)。
  • 作为替代方案,您可以尝试使用 allow(...).to_receive(...).and_return(...) 构造来消除副作用。

标签: ruby-on-rails ruby ruby-on-rails-4 rspec


【解决方案1】:

也许是这样的?

low_res = Dir["#{Rails.root}/public/files/low_resolution_#{id}_*"]
expect(low_res).should_not be_empty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多