Specs2確實提供了一個containsAllOf
匹配器,但我無法按照自己的方式使其工作。我有兩個字符串A和B,我想測試發生在B中的所有字符數存在於A.Specs2:如何測試「abc」是否包含「aabb」的所有內容
我最好的嘗試,到目前爲止是
A.toCharArray.toSeq must containAllOf(B.toCharArray.toSeq)
但這個失敗,這樣的錯誤
WrappedArray(一個,b,C,d,...)不包含S,一個,V,H,I,...以及 不能包含...
- 的WrappedArray確實包含字符據稱它並不根據Specs2
- 爲什麼要爲元素測試的必備不包含哪些內容?我不想測試相等性,我想測試B是否是A的「子集」(但不在集合的嚴格集合定義中)
如何爲此編寫工作規範場景?
嘗試'A.toSet必須包含AllOf(B.toSet)' - 'toSet'在String上調用將返回字符串中(唯一)Char的Set集合。 – Shadowlands
這不會編譯,'A.toSet.toSeq'等等,並通過測試 - 但是這並不能解釋爲什麼上述不起作用,何時(在我看來)它完全應該:? 「containsAllOf」這個名字顯然並不意味着它們只能被包含一次,並且左側不允許包含比右側更多的字符...... – Leo
嗯,如果containsAllOf返回true,如果第一個序列包含它整個第二個序列的某處,連續而有序。這不是一個「集合」比較,而是一個「Seq」比較。這意味着'A.toSet.toSeq'對於一些輸入可能會失敗(例如,嘗試B =「bbaa」),除非產生的'Seq'被首先排序('A.toSet.toSeq.sorted'等)。 )。 – Shadowlands