我正在创建一个接受 JSON 数据的 API,并且我想为其提供测试数据。
有没有类似于 JSON 数据工厂的东西?我想在对象和 JSON 中提供相同的数据,以便我可以检查导入是否按预期工作。
JSON 具有严格定义的结构,所以我不能调用FactoryGirl(:record).to_json
.
我正在创建一个接受 JSON 数据的 API,并且我想为其提供测试数据。
有没有类似于 JSON 数据工厂的东西?我想在对象和 JSON 中提供相同的数据,以便我可以检查导入是否按预期工作。
JSON 具有严格定义的结构,所以我不能调用FactoryGirl(:record).to_json
.
在这种情况下,我将为要导入的 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,然后将其导入。
按照 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
实际上,您可以使用 factorygirl 执行以下操作。
factory :json_data, class: OpenStruct do
//fields
end
FactoryGirl.create(:json_data).marshal_dump.to_json
前段时间我们实现了 FactoryJSON gem 来解决这个问题。到目前为止,它对我们来说效果很好。自述文件涵盖了可能的用例。