rspec使用外部文件中的数据填充变量

Fit*_*min 5 rspec ruby-on-rails

我仍然是新的顶级游戏,所以请原谅这是一个简单的,但我无法在谷歌上找到答案.我有一个库模块,用于处理从API响应中解析一些数据.我已经编写了测试,并且一切正常,但是我想将假的API响应数据移动到外部文件中,因为它很长并且使得测试更难以阅读.我看了固定装置和工厂,但这些都是模型,这只是一个非常长的xml片段.我目前的测试看起来像这样

describe :my_test do
  let(:my_var) { REALLY_LONG_XML_SNIPPET}
  ....test code...
end
Run Code Online (Sandbox Code Playgroud)

如何将REALLY_LONG_XML_SNIPPET移动到外部文件中?

Jam*_*mes 10

这是我在我的规格中使用的:

let(:doc) { IO.read(Rails.root.join("spec", "fixtures", "api_response.xml")) }
Run Code Online (Sandbox Code Playgroud)

它会将文件的内容复制到一个字符串中.

请注意,我已关闭RSpec的默认ActiveRecord灯具,因此我将我的灯具放在该目录中.

更新:使用Rspec Rails 3.5和更新版本

一个人也可以使用file_fixture

let(:doc) { file_fixture("api_response.xml").read }
Run Code Online (Sandbox Code Playgroud)

对于

默认情况下存储在spec/fixtures/files中的文件

但文件位置可以自定义.