首页 > 解决方案 > 为什么 Fixture_file_upload 在 RSpec 中不可用(没有 ActiveRecord)?

问题描述

我正在尝试在 Rails 5.2 应用程序中使用 RSpec 3.7 测试文件上传,而我见过的最简单的建议(包括这个 SO 帖子在内的几个地方)是使用fixture_file_upload- 看起来很棒,除了它似乎在我的应用程序中可用,我不知道为什么。

我唯一能想到的是我们的应用程序没有使用 ActiveRecord,它使用的是 MongoID。但是不应该要求 ActiveRecord 使用这些方法……它们完全不相关。Rails 5 中是否还有我缺少的另一个新的“ActiveSomething”库?(这个应用程序是从 Rails 4 应用程序升级而来的......)

为了更具体地解释我的问题,我尝试提出:

let(:file) { fixture_file_upload('invalid_csv.csv') }

在我的一种情况下,它引发了一个例外:

undefined local variable or method 'fixture_path' for #<RSpec::ExampleGroups::...>

我尝试config.file_fixture_path 按照此处概述的方式进行定义,这引发了它自己的异常:

undefined method `file_fixture_path=' for #<RSpec::Core::Configuration::...>

这行得通吗?显然我错过了一些东西......

标签: ruby-on-railsrspecruby-on-rails-5rspec-rails

解决方案


我已经通过在 RSpec 配置块中包含他们的模块来解决这个问题:

RSpec.configure do |config|
  #...
  config.include ActionDispatch::TestProcess::FixtureFile
  #...
end

推荐阅读