15

我正在创建一个接受 JSON 数据的 API,并且我想为其提供测试数据。

有没有类似于 JSON 数据工厂的东西?我想在对象和 JSON 中提供相同的数据,以便我可以检查导入是否按预期工作。

JSON 具有严格定义的结构,所以我不能调用FactoryGirl(:record).to_json.

4

4 回答 4

32

在这种情况下,我将为要导入的 JSON 创建夹具文件。像这样的东西可以工作:

json = JSON.parse(File.read("fixtures/valid_customer.json"))
customer = ImportsData.import(json)
customer.name.should eq(json["customer"]["name"])

我还没有看到可以使用 FactoryGirl 设置属性,然后将其转换为 JSON 并导入的东西。您可能需要创建一个映射器,该映射器将获取您的 Customer 对象并将其呈现为 JSON,然后将其导入。

于 2013-01-30T14:51:10.290 回答
16

按照 Jesse 的建议,现在您可以在 Rails 5 中使用file_fixture文档

我只是使用一个小帮手来阅读我的 json 固定装置:

def json_data(filename:)
  file_content = file_fixture("#{filename}.json").read
  JSON.parse(file_content, symbolize_names: true)
end
于 2017-02-16T21:49:41.237 回答
5

实际上,您可以使用 factorygirl 执行以下操作。

factory :json_data, class: OpenStruct do 
   //fields
end

FactoryGirl.create(:json_data).marshal_dump.to_json
于 2015-07-07T22:31:04.027 回答
0

前段时间我们实现了 FactoryJSON gem 来解决这个问题。到目前为止,它对我们来说效果很好。自述文件涵盖了可能的用例。

于 2016-03-29T10:52:16.117 回答