gpt4 book ai didi

unit-testing - ScalaTest:使用 ShouldMatcher 检查序列的内容

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

在我的单元测试中,我想表示一个计算(结果)序列产生了一个预定义的结果值序列。但没有对序列容器的实际实现类型做任何假设。

我想清楚地说明我的意图,不言自明。
如果我尝试使用 ScalaTest 的“ShouldMatchers”并编写

val Input22 = ...
calculation(Input22) should equal (Seq("x","u"))

...然后我遇到了简单的平等问题,因为 calculation(..)可能会返回一个 ArrayBuffer,而 Seq("x","u")是一个列表

最佳答案

您使用的是 2.7.7 吗?在 2.8 不同的 Seq 中,具有相同元素(以相同顺序)应该是相等的:

scala> import org.scalatest.matchers.ShouldMatchers._
import org.scalatest.matchers.ShouldMatchers._

scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer

scala> val list = List(1, 2, 3)
list: List[Int] = List(1, 2, 3)

scala> val arrayBuffer = ArrayBuffer(1, 2, 3)
arrayBuffer: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3)

scala> list == arrayBuffer
res2: Boolean = true

scala> arrayBuffer == list
res3: Boolean = true

scala> list should equal (arrayBuffer)

scala> arrayBuffer should equal (list)

2.8 中这条规则的一个异常(exception)是数组,它只能等于其他数组,因为它们是 Java 数组。 (当您对它们调用 .equals 时,不会在结构上比较 Java 数组,但 ScalaTest 匹配器确实对两个数组进行结构相等。)

关于unit-testing - ScalaTest:使用 ShouldMatcher 检查序列的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3691281/

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