我遇到了奇怪的行为,我想知道这是一个错误,还是我错过了什么。
以下代码:
class Foo extends SpecificationWithJUnit {
"This test should pass" in new ctx {
Bar(Zoo("id")) must haveInstanceZoo
}
trait ctx extends Scope {
def haveInstanceZoo : Matcher[Bar] =
beAnInstanceOf[Zoo] ^^ { (_: Bar).z aka "instanceOfZoo" }
}
}
case class Bar(z: Zoo)
case class Zoo(id: String)
失败,出现以下异常:
'org.specs2.matcher.ThrownExpectationsCreation$$anon$1@48072f8c:
org.specs2.matcher.ThrownExpectationsCreation$$anon$1'
is not an instance of 'com.test.Zoo'
如果我删除"又名"从自定义匹配器一切正常。
思想?
由于 Netta
答案 0 :(得分:3)
您不能像这样使用aka
,因为您实际上是在试图断言Expectation
,您使用aka
创建的对象是Zoo
的实例。
如果要在匹配器上指定其他失败消息,可以写下:
def haveInstanceZoo: Matcher[Bar] = (bar: Bar) =>
(bar.z.isInstanceOf[Zoo], "bar.z is not an instance of Zoo")