Почему мой 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_responseto_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\\\"}\"" 
Другие вопросы по тегам