Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RSpec doesn't show full difference between return and expected

When a run a test with JSON, the rspec doesn't show the full spec, so I can't see the diference between return and expected.

The message of diff is shortened with ...

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 look in middle of message

My script test:

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

What gem/plugin or expectation that you use to check your test?

I use the console and Rubymine IDE.

Now I use:

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

And I don't like to write this for to debbug my test.

like image 976
Lini Avatar asked Mar 09 '17 14:03

Lini


2 Answers

Set RSpec::Support::ObjectFormatter.default_instance.max_formatted_output_length to a high value

Update: as Yurri suggested, it might be better to better to set it to nil

like image 179
Matias Hurtado Avatar answered Oct 09 '22 12:10

Matias Hurtado


This might help: https://github.com/waterlink/rspec-json_expectations

As a bonus, it allows you to specify your tests in terms of a subset of attributes, which can be used to create more granular tests.

like image 35
gwcodes Avatar answered Oct 09 '22 12:10

gwcodes