0

Specs2 确实提供了一个containsAllOf匹配器,但我无法让它按照我想要的方式工作。我有两个字符串 A 和 B,我想测试 B 中出现的所有字符是否都存在于 A 中。

到目前为止我最好的尝试是

A.toCharArray.toSeq must containAllOf(B.toCharArray.toSeq)

但这失败了,错误如下

WrappedArray( a , b, c, d, ...) 不包含 S, a , V, H, I, ... 并且 不得包含 ...

  1. WrappedArray 确实包含据称根据 Specs2 不包含的字符
  2. 为什么要对 A不得包含的元素进行测试?我不想测试相等性,我想测试 B 是否是 A 的“子集”(但不是在集合的严格集合论定义中)

如何为这种情况编写工作规范?

4

2 回答 2

0

这不使用 containsAllOf 但应该工作:

/* turn A into a Map for quick contains lookup */
val theAs = A.map(x=> (x,x)).toMap

/* if resulting list has length greater than 0, 
 * then there is something in A that is not in B*/
B.filterNot(theAs.contains).length must === 0
于 2013-11-02T14:44:45.563 回答
0

目前,我选择了这个变体:

B.toSeq.map(c => A must contain(c))

我仍然愿意接受建议,但如果没有更清洁的解决方案,我可能(第一次)回答我自己的问题。

或者这是我怀疑 Specs2 测试某事物的情况之一,而实际上它没有?

于 2013-11-02T15:36:04.200 回答