我必须测试一个无循环图,并且总是检查字符串是否不同是不是很有用(它会抛出异常)。必须有一个更好的解决方案,但我无法想出它,我在specs2文档中丢失了。 这是代码的一个例子:
"BiDirectionalEdge" should {
"throw an Error for the wrong DirectedEdges" in prop {
(a :String, b :String, c :String, d :String) =>
val edge1 = createDirectedEdge(a, b, c)
val edge2 = createDirectedEdge(c, b, d)
new BiDirectionalEdge(edge1, edge2) must throwA[InvalidFormatException] or(a mustEqual d)
}
如果a和c相同,createDirectedEdge将抛出异常(我对该行为有不同的测试)。
答案 0 :(得分:1)
是的,有更好的方法 - 这正是条件属性的用途。只需添加您的条件,然后添加==>
:
"BiDirectionalEdge" should {
"throw an Error for the wrong DirectedEdges" in prop {
(a: String, b: String, c: String, d: String) => (a != c) ==>
val edge1 = createDirectedEdge(a, b, c)
val edge2 = createDirectedEdge(c, b, d)
new BiDirectionalEdge(edge1, edge2) must
throwA[InvalidFormatException] or(a mustEqual d)
}
}
如果条件可能经常失败,您应该采取不同的方法(有关详细信息,请参阅the ScalaCheck guide),但在您的情况下,条件属性是完全合适的。