gpt4 book ai didi

scala - 如何在两个列表上使用 ScalaTest "contain allOf"?

转载 作者:行者123 更新时间:2023-12-03 04:44:42 29 4
gpt4 key购买 nike

我正在寻找一个 ScalaTest 匹配器来检查列表是否包含所有所需的元素(在另一个列表中给出),但也可能是其他元素。

contain allOf 要求获取两个固定元素,由于某种原因,其余元素作为可变参数。

我可以采取这样的解决方法,但它非常丑陋:

val list = List(1,2,3,4)
val wanted = List(1,2,3)
list should contain allOf ( wanted.head, wanted.tail.head, wanted.tail.tail :_* ) // ugly workaround

为了给出一个列表作为匹配,有contain theSameElementsAs。但是,它不允许无关元素出现在探测值中(我认为)。

所以:

  • 我错过了什么吗?
  • 为什么 allOf 的声明方式必须在前面给出两个固定元素(即为什么不只传递可变参数?)
  • 是否应该有 theSameElementsAndMaybeMoreThan 方法(大概有一个更好的名称)?

我尝试过的一些代码:

val list = List.empty[String]
//list should contain allOf("a") // does not compile
list should contain allOf("a","b")
list should contain allOf("a","b","c")

val wanted = List("a","b","c")
//list should contain allOf( wanted ) // does not compile
list should contain allOf( wanted.head, wanted.tail ) // compiles, but tests the wrong thing; against List(head,List(tail))

documentation :

Scala 2.11.4、ScalaTest 2.2.1

编辑:

我可能最终会使用类似的东西:

wanted.foreach( list should contain(_) )

但是,这对我来说似乎不像内置集合构造那样可读(should 是一种嵌入式)。

最佳答案

Bill Venners 在 ScalaTest 邮件列表中这样说:

Yes, we didn't want to hold up the 2.0 release to add that, but have since added it. I believe we added it to master, though, not the 2.2.x branch. Regardless, the syntax looks like:

xSet 应包含 allElementsOf (ySet)

链接到message .

关于scala - 如何在两个列表上使用 ScalaTest "contain allOf"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26801679/

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