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

时间:2012-01-23 20:17:18

标签: ruby-on-rails rspec

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

describe :my_test do
  let(:my_var) { REALLY_LONG_XML_SNIPPET}
  ....test code...
end

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

1 个答案:

答案 0 :(得分:10)

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

let(:doc) { IO.read(Rails.root.join("spec", "fixtures", "api_response.xml")) }

它会将文件的内容复制到字符串中。

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

使用Rspec Rails 3.5及更新版

更新

也可以使用file_fixture

let(:doc) { file_fixture("api_response.xml").read }

  

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

但可以自定义文件位置。