2017-03-09 24 views
3

當運行JSON測試時,rspec不顯示完整規範,所以我看不到回報和期望之間的差異。RSpec不顯示回報和預期之間的完全區別

DIFF的消息會被縮短,...

expected: "{\"id\":1,\"number\":1,\"sequential\":1,\"emitted_at\":\"2014-01-01T13:35:21.000Z\",\"status\":\"aut...erenceds_attributes\":[{\"id\":null,\"nfe_key\":\"42150707697707000148550010000020101000020105\"}]}" 
    got: "{\"id\":1,\"number\":1,\"sequential\":1,\"emitted_at\":\"2014-01-01T13:35:21.000Z\",\"status\":\"aut...erenceds_attributes\":[{\"id\":null,\"nfe_key\":\"42150707697707000148550010000020101000020105\"}]}" 

很重... erenceds_attributes看在消息中

我的腳本測試:

RSpec.describe InvoiceSerializer do 
    let(:invoice) do 
    build :invoice, :testing_serializer 
    end 

    subject { described_class.new invoice } 

    it "returns a json" do 
    expected = { 
     id: 1, 
     number: 1, 
     sequential: 1, 
     emitted_at: "2014-01-01T13:35:21.000Z", 
     status: "authorized", 
     invoice_bills_attributes: [{ 
     id: nil, 
     expire_at: "2014-01-02T00:00:00.000Z", 
     value: "1.23" 
     }], 
     ... 
    }.to_json 

    expect(subject.to_json).to eq expected 
    end 
end 

Example of error in my console

你用什麼gem /插件或期望檢查你的測試?

我使用控制檯和Rubymine IDE。

現在我用:

puts "1 --> #{subject.to_json}" 
puts "2 --> #{expected}" 

而且我不喜歡寫本作以debbug我的測試。

+0

版本的rspec?它是rspec軌道? – Anthony

+2

一個想法:測試'.to_json'方法返回一個String,然後測試它可以通過'JSON.parse'解析。這告訴你你的方法正在返回有效的JSON。然後,使用解析的數據散列,將_that_與預期的散列進行比較。輸出結果可能並不完美(現在不能回想起輸出結果如何),但是您可以循環遍歷散列值,然後比較每個鍵/值對。這將使你不知道他們之間究竟有什麼不同。 – MrDanA

+0

我使用rspec-rails - 3.5.2 – Linielson

回答