【问题标题】:Rspec, Paperclip and Rails - spec with fixture_file_upload works as single, not in groupRspec、Paperclip 和 Rails - 带有fixture_file_upload 的规范作为单个而不是在组中工作
【发布时间】:2015-02-05 19:36:45
【问题描述】:

我有一个规范在单独运行时通过,但是当我将它作为测试目录或整个套件的一部分运行时,它会失败。

规格

WebMock.disable!

describe MembersUpload::ParseSpreadsheet do

  let(:client) { create(:client) }
  let(:members_upload) { create(:members_upload, client: client) }

  context 'parsing an uploaded spreadsheet' do
    it 'should parse the spreadsheet and add rows' do
      MembersUpload::ParseSpreadsheet.call(client.id, members_upload.id)
      members_upload.reload
      expect(members_upload.spreadsheet_rows).to be > 0
    end
  end

end

工厂

FactoryGirl.define do  

  factory :members_upload do
    association :client
    ignore_duplicates false
    send_welcome_letters false
    spreadsheet_rows 0
    total_added 0
    invalid_percent 0
    disallowed_percent 0
    unknown_percent 0
    accept_all_percent 0
    invalid_violation false
    disallowed_violation false
    status 'scheduled'
    approved false
    approve_by Date.today + 14.days
    approval_type 'client'
    spreadsheet { fixture_file_upload "#{Rails.root}/spec/fixtures/member_uploads/members-uploads-samples-good.csv", 'text/csv' }
  end
end

当作为一个套件或一组测试的一部分运行时,我收到以下错误:
NoMethodError: undefined method body for nil:NilClass

错误本身指向名为copy_to_local_filefog 方法,似乎表明它无法加载文件/文件的内容。

我觉得我必须遗漏一些明显的东西,为什么这个测试会自行通过,而不是作为套件/组的一部分。

我是 Rspec 的新手,因为它涉及/处理上传的文件,并且不知道从哪里开始(我已经用谷歌搜索过,但发现很少)。

【问题讨论】:

    标签: ruby-on-rails rspec fog


    【解决方案1】:

    我认为你提到的copy_to_local_file 是当回形针尝试使用 for 与 S3 对话时。这在生产环境中很好,但在测试中可能不是您想要的。

    如果您将Fog.mock = true 添加到您的测试设置中,它将在本地创建一个可以操作的模拟版本的 S3。然后,您可以在测试设置中保存相关模型的副本(它将在内存中实例化这个“文件”),然后它应该是您可以读回的东西。

    希望有帮助!

    【讨论】:

    • 谢谢,@geemus。我现在必须出去,但今晚会尝试并报告。感谢您的反馈!
    • 当然,雾在测试中的工作方式需要一点时间来适应,但一旦人们习惯了它,通常看起来效果很好。所以希望这也是你的经验。如果您有更多问题或疑虑,请在返回时告诉我。
    • 谢谢,再次感谢@geemus,并为延迟道歉......工作妨碍了它;)。我现在的整体设置一定有问题,因为当我添加Fog.mock = true 时,我一直收到上述错误。我想我可能需要把这该死的套房拆开然后从那里走……
    • 不用担心,工作会做到的! Fog.mock 以一张白纸开始(因此不存在文件)。设置好之后,你可以添加一些东西来创建你需要的任何目录/文件。我想如果你这样做,它可能对你有用吗?我想如果没有更多细节就很难说,但可能是一个很好的起点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2015-07-27
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多