JSONでテストを実行すると、rspecは完全な仕様を示さないため、リターンと予想の違いはわかりません。メッセージRSpecはリターンと予想の間に完全な違いを表示していません
私のスクリプトのテストの途中で
差分のメッセージはに短縮されています...
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\"}]}"
AUT ... 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
あなたのテストをチェックするために使用する宝石/プラグインや期待はありますか?
私はコンソールとRubymine IDEを使用します。
今、私が使用します。
puts "1 --> #{subject.to_json}"
puts "2 --> #{expected}"
そして私は私のテストをdebbugするためにこれを書くことが好きではありません。
バージョンのrspec? rspec-railsですか? – Anthony
1つのアイデア: '.to_json'メソッドがStringを返すことをテストし、' JSON.parse'を介して解析できることをテストします。これは、あなたのメソッドが有効なJSONを返すことを示しています。次に、解析されたデータハッシュで、_that_と期待されるハッシュを比較します。出力はまだ完璧ではないかもしれませんが(今のところどのように出力されたかは想像できませんが)、代わりにハッシュをループして、それぞれのキーと値のペアを比較するだけです。それは、それらの間でまったく異なるものをゼロにします。 – MrDanA
私はrspec-railsを使用しています - 3.5.2 – Linielson