规范2:如何测试“abc”是否包含所有“aabb”

时间:2013-11-02 12:34:46

标签: unit-testing scala specs2

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. 的字符
  3. 为什么必须包含元素A的测试?我不想要测试等式,我想测试B是否是A的“子集”(但不是在严格的集合理论定义中)
  4. 如何为此方案编写工作规范?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

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

或者这是我怀疑Specs2测试一个东西的情况之一,当它实际上没有?