Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RSpec不';t显示回报和预期之间的完全差异_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails RSpec不';t显示回报和预期之间的完全差异

Ruby on rails RSpec不';t显示回报和预期之间的完全差异,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,当使用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\":\"4215070769770700014855001000

当使用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\u属性查看消息的中间部分

我的脚本测试:

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

您使用什么gem/插件或期望来检查您的测试

我使用控制台和Rubymine IDE

现在我使用:

puts "1 --> #{subject.to_json}"
puts "2 --> #{expected}"
我不想为我的测试写这篇文章。

这可能会有帮助:


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

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


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

版本的rspec?是rspec rails吗?一个想法是:测试
.to_json
方法是否返回字符串,然后测试它是否可以通过
json.parse
解析。这表明您的方法正在返回有效的JSON。然后,使用解析的数据散列,将其与预期的散列进行比较。输出可能仍然不完美(现在还记不起它是如何输出的),但是您可以在散列上循环并比较每个键/值对。这将使您了解它们之间的区别。我使用rspec rails-3.5.2Rspec没有输出结果测试的配置?@Linielson您找到了答案吗?我喜欢这个,但我需要使用“等于”而不是“包括”。或将其设置为
nil
将阻止
RSpec
截断格式化输出。这是源代码。