Использование спецификаторов соответствия в свойствах scalacheck - PullRequest
2 голосов
/ 21 октября 2010

Я пытаюсь использовать спецификации в свойствах скалаки. Например, у меня есть средство сравнения, которое работает так:

x must matchMyMatcher(y)

Когда я хочу использовать это сопоставление внутри свойства scalacheck, я делаю следующее:

import org.scalacheck._
import org.specs._
...
val prop = Prop.forAll(myGen){
    (x,y) => new matchMyMatcher(x)(y)._1
}
prop must pass

К сожалению, в этом случае у меня есть стирание отладочной информации, которую я поместил в matcher и которая мне нужна, когда свойство не работает. Есть ли предусмотренный способ использования спичек внутри реквизита?

1 Ответ

6 голосов
/ 21 октября 2010

Вы получите правильное сообщение об ошибке, если вы используете "must" со своим сопоставителем:

val gen = Gen.oneOf(("a", "a"), ("b", "b2"))
val function = (pair: (String, String)) => pair._1 must myMatcher(pair._2)
gen must pass(function)

Тогда, в этом случае ваш пример должен потерпеть неудачу с:

> A counter-example is '(b,b2)': 'b' is not equal to 'b2' (after 0 tries)

...