1, "b" -> 2, "c" -> 3) should equal Ma-6ren">
gpt4 book ai didi

scala - 如何显示 ScalaTest 中给出的内容和预期内容之间的差异?

转载 作者:行者123 更新时间:2023-12-04 04:30:15 26 4
gpt4 key购买 nike

如果您匹配列表或 map 或任何其他复杂结构,那么查看给出的内容和预期内容之间的差异会很有用。例如:

Map("a" -> 1, "b" -> 2, "c" -> 3) should equal Map("a" -> 1, "b" -> 5, "c" -> 3)

// ScalaTest output:
[info] Map("a" -> 1, "b" -> 2, "c" -> 3) did not equal Map("a" -> 1, "b" -> 5, "c" -> 3) (Test.scala)
[info] org.scalatest.exceptions.TestFailedException:
[info] ...

您必须手动浏览两个 map 才能找到它们之间的差异,您的收藏越大,就越难。

另一方面,在 RSpec 中,您将获得:
expect({a: 1, b: 2, c: 3}).to match({a: 1, b: 5, c: 3})

// RSpec output:
Failure/Error: it { expect({a: 1, b: 2, c: 3}).to match({a: 1, b: 5, c: 3})}
expected {:a=>1, :b=>2, :c=>3} to match {:a=>1, :b=>5, :c=>3}
Diff:
@@ -1,4 +1,4 @@
:a => 1,
-:b => 5,
+:b => 2,
:c => 3,

# ./spec/test_spec.rb:2:in `block (2 levels) in <top (required)>'

是否有可能与 ScalaTest 类似?

最佳答案

我不相信有什么完全像你描述的那样。您在 ScalaTest 中可能得到的最接近的是 String 的内置差异。 .

不理想,但添加toString在你的 map 的最后会给出一个稍微好一点的输出。同样,使用 pretty方法在 org.scalautils.PrettyMethods做同样的事情。

例如:

Map("a" -> 1, "b" -> 2, "c" -> 3).toString shouldBe Map("a" -> 1, "b" -> 5, "c" -> 3).toString

// scalatest output
[info] "Map(a -> 1, b -> [2], c -> 3)" was not equal to "Map(a -> 1, b -> [5], c -> 3)"
[info] org.scalatest.exceptions.TestFailedException: ...

scalatest-users email thread提出了与您类似的问题,并得到了 ScalaTest 的作者 Bil​​l Venners 的答复。

关于scala - 如何显示 ScalaTest 中给出的内容和预期内容之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28528785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com