Почему мой JSON, созданный через `Factory`, отличается от того, который я получаю из`API`.
Мой макет stub
получить годов escaped
правильно, но ответа API никто не получает escaped
,
Ниже мой заводской заглушки.
require 'faker'
FactoryGirl.define do
factory :account do |f|
f.name {Faker::Name.name}
f.description {Faker::Name.description}
end
factory :account_json, class: OpenStruct do
send :'@type' , "accountResource"
createdAt "2014-08-07T14:31:58"
createdBy "2"
updatedAt "2014-08-07T14:31:58"
updatedBy "2"
accountid "2055"
name "Test"
description "Something about Test"
disabled "false"
end
end
Ниже приведена спецификация, в которой я собираю свою заглушку Factory и пытаюсь сравнить ее с ответом API.
it "can find an account that this user belongs to" do
account = Account.find( id: 2055, authorization: @auth )
hashed_response = FactoryGirl.build(:account_json).marshal_dump.to_json
expect(account.to_json).to eq(hashed_response.to_json);
end
Ответ API и заглушка
FactoryGirl Stub
expected: "\"{\\\"@type\\\":\\\"accountResource\\\",\\\"createdAt\\\":\\\"2014-08-07T14:31:58\\\",\\\"createdBy\\\":\\\"2\\\",\\\"updatedAt\\\":\\\"2014-08-07T14:31:58\\\",\\\"updatedBy\\\":\\\"2\\\",\\\"accountid\\\":\\\"2055\\\",\\\"name\\\":\\\"Test\\\",\\\"description\\\":\\\"Something about Test\\\",\\\"disabled\\\":\\\"false\\\"}\"
Ответ API
got: "{\"@type\":\"accountResource\",\"createdAt\":\"2014-08-07T14:31:58\",\"createdBy\":2,\"updatedAt\":\"2014-08-07T14:31:58\",\"updatedBy\":2,\"accountid\":2055,\"name\":\"Test\",\"description\":\"Something about Test\",\"disabled\":false}"
Почему мой JSON создан с помощью Factory
отличается от того, что я получаю от API
,
1 ответ
Решение
Вы конвертируете hashed_response
to_json
дважды - один раз во второй и один раз в третьей строке вашей спецификации. Удалить один из to_json
вызовы методов.
Например:
2.0.0-p247 :005 > {"@type" => "accountResource"}.to_json
=> "{\"@type\":\"accountResource\"}"
2.0.0-p247 :006 > {"@type" => "accountResource"}.to_json.to_json
=> "\"{\\\"@type\\\":\\\"accountResource\\\"}\""