Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
Unit testing ScalateTest:使用ShouldMatcher检查序列的内容_Unit Testing_Scala_Scalatest - Fatal编程技术网

Unit testing ScalateTest:使用ShouldMatcher检查序列的内容

Unit testing ScalateTest:使用ShouldMatcher检查序列的内容,unit-testing,scala,scalatest,Unit Testing,Scala,Scalatest,在我的单元测试中,我想表示一个计算(结果)序列产生了一个预定义的结果值序列。但不假设序列容器的实际实现类型 我想把我的意图说得非常清楚和不言自明。 如果我尝试使用ScalaTest的“ShouldMatchers”并编写 val Input22 = ... calculation(Input22) should equal (Seq("x","u")) …然后我遇到了简单等式的麻烦,因为计算(…)可能返回一个数组缓冲,而Seq(“x”,“u”)是一个列表您使用的是2.7.7吗?在2.8中,具有

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

我想把我的意图说得非常清楚和不言自明。
如果我尝试使用ScalaTest的“ShouldMatchers”并编写

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

…然后我遇到了简单等式的麻烦,因为
计算(…)
可能返回一个数组缓冲,而
Seq(“x”,“u”)
是一个列表您使用的是2.7.7吗?在2.8中,具有相同元素(顺序相同)的不同序列应相等:

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中此规则的一个例外是数组,它只能与其他数组相等,因为它们是Java数组。(在调用.equals时,Java数组不会在结构上进行比较,但ScalaTest matchers会在两个数组上进行结构上的相等。)

但在我当前的程序中,我对规范还没有依赖性,我不愿意添加它。因此,我最终实现了自己的定制匹配器,它为我提供了完全相同的解决方案。看不,不是一般的。。。但在这种情况下,有一个要求是让事情尽可能简单。Specs将是另一个向已经在与ScalaRemember基础知识斗争的人们解释的库。如果答案正确,您可以通过单击复选框大纲接受答案。还有什么比ScalarTest的父亲自己的答案更好?=)
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)