Rspec 字符串截断的最佳解决方法是什么?

kev*_*ine 4 ruby rspec

我正在寻找解决此 RSpec 错误功能的方法:https://github.com/rspec/rspec-core/issues/2535

对两个较长的字符串进行 RSpec 相等断言可能会导致字符串的不同部分被忽略。

例如,如果期望值为:

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
Run Code Online (Sandbox Code Playgroud)

实际值为:

"aaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaaaaaaaa"```
Run Code Online (Sandbox Code Playgroud)

输出可能是:

 Failure/Error: expect(g.to_whitespace_escaped_xwiki).to eq(expect)

   expected: "aaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaa"
        got: "aaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaa"
   (compared using ==)
Run Code Online (Sandbox Code Playgroud)

不输出不同的部分。

Per*_*ell 9

RSpec 有一个设置来设置格式化对象时打印的最大字符长度:

RSpec.configure do |rspec|
  rspec.expect_with :rspec do |c|
    c.max_formatted_output_length = nil
  end
end
Run Code Online (Sandbox Code Playgroud)

您可以设置 length 以nil防止 RSpec 进行截断。将其设置为整数将更改格式化输出中的最大字符数(200默认情况下)。

文档:http://rspec.info/documentation/3.9/rspec-expectations/RSpec/Expectations/Configuration.html#max_formatted_output_length=-instance_method