ruby RSpec未显示回报与预期之间的全部差异

qf9go6mv  于 2023-01-01  发布在  Ruby
关注(0)|答案(3)|浏览(112)

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

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
您使用什么gem/插件或期望来检查您的测试?
我使用控制台和Rubymine IDE。
现在我用途:

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

我不想写这个来破坏我的测试。

bkhjykvo

bkhjykvo1#

RSpec::Support::ObjectFormatter.default_instance.max_formatted_output_length设置为较高值
更新:正如Yurri所建议的,将其设置为nil可能会更好

nzk0hqpo

nzk0hqpo2#

这可能有助于:https://github.com/waterlink/rspec-json_expectations
另外,它还允许您根据属性子集指定测试,这些属性子集可用于创建更细粒度的测试。

tcbh2hod

tcbh2hod3#

要在前面答案的基础上构建并利用RSpec.configure语法,您需要使用以下内容:

RSpec.configure do |rspec|
  rspec.expect_with :rspec do |c|
     # Or a very large value, if you do want to truncate at some point
    c.max_formatted_output_length = nil
  end
end

相关问题