RSpec并未显示回报与预期之间的完全差异

时间:2017-03-09 14:05:50

标签: ruby-on-rails ruby rspec

当使用JSON运行测试时,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}"

而且我不想写这个以试验我的测试。

2 个答案:

答案 0 :(得分:2)

这可能会有所帮助:https://github.com/waterlink/rspec-json_expectations

作为奖励,它允许您根据属性的子集指定测试,这些属性可用于创建更精细的测试。

答案 1 :(得分:2)

RSpec::Support::ObjectFormatter.default_instance.max_formatted_output_length 设置为高值

更新:正如 Yurri 建议的那样,最好将其设置为 nil