【发布时间】:2015-09-20 14:13:41
【问题描述】:
是否可以在 sbt 控制台中运行和试用 specs2?我试过 === 但这不起作用,因为我认为它是 Specification 类中的一种方法。我也试过了:
class A extends Specification{ "b" should{ "do" in{ 3 === 4 } } }; (new A).toResult(true)
如果我知道正确的调用方法values,我怀疑上述方法应该有效吗?
如果我可以执行单个语句,理想情况下我会喜欢它,但如果那不可能,有没有办法运行这种块?
PS:specs2 有非 Fluent 接口吗?
【问题讨论】:
-
什么叫“不流畅”的界面?
-
@Eric 感谢您的回答。不流利的意思是我想说
collection.hasSize(3)而不是collection must have size(3),只是我自己的一小部分,以便我可以更轻松地推断类型。顺便说一句,感谢伟大的框架。 -
您可以“应用”任何匹配器:
be_==(1)(2).toResult。不幸的是,对于集合,类型推断可能不会更好,具体取决于匹配器:haveSize[List[Int]](3).apply(List(1,2,3)).toResult(您需要注释)和contain(1)(List(1, 2)).toResult(您不需要)。此外,它读起来很奇怪...... -
否则,如果您不想使用
must,您可以定义自己的扩展匹配器方法,但您必须为每个匹配器都这样做:implicit class traversableMatchers[I](c: Traversable[I]) { def hasSize(n: Int) = haveSize[Traversable[I]](n).apply(c) }