Specs2的验收规范不适用于'Scope'

时间:2014-10-18 04:51:39

标签: scala specs2

我使用Scope进行了一些specs2测试:

"hello" should {
   "return world" in new Subject {
       hello.get === "world"
   }
}
trait Subject extends org.specs2.specification.Scope {
   val hello = new Hello
}

现在我想将其转换为接受风格:

def is = s2"""
   hello.get should return 'world' $e1
"""
def e1 = new Subject {
    hello.get === "world"
}
trait Subject extends org.specs2.specification.Scope {
   val hello = new Hello
}

它似乎正常运行,测试通过了,但很快我发现无论我如何修改它都不会失败:

hello.get === "invalid-world" // still passing

如何在接受方式中正确使用Scope

1 个答案:

答案 0 :(得分:1)

刚刚发现此问题的问题:https://github.com/etorreborre/specs2/issues/180

从那里引用的答案:

  

这是可以预料的。范围是仅用于可变的特征   规格。你有两种解决方法:

     

使用案例类或案例对象

s2"""
 will fail      ${t.fail}
"""
case object t {
  val foo = false
  def fail = foo must beTrue
}
     

ThrownExpectations特征与Specification混合在一起,以便失败的预期将会出现'#34;冒泡"   范围特征之外