如果我在Specs2测试中实际上没有明确的断言(如count must_== 1
a),我会收到一个错误,指示没有隐式可找到。scalamock/specs2:如果我没有断言会怎么样?期望仅在IsolatedMockFactory中
// doesn't compile
class Example extends Specification {
"You need an assertion" >> {
// hello!
}
}
不够公平。
但是,如果我也使用scalamock的MockContext
,我可以只依靠期望而不是断言;模拟一些东西和scalamock将验证方法被称为等;
class MockExample extends Specification {
"I can use 'expectations' here instead" in new MockContext {
val foo = mock[Foo]
(foo.bar _).expects(*).once
// no explicit assertions
}
}
但是,如果我尝试在IsolatedMockFactory
混合份额方面的设置,我回到编译失败。任何想法如何解决它?
// doesn't compile
class AnotherMockExample extends Specification with IsolatedMockFactory {
val foo = mock[Foo]
"I can't use 'expectations' here any more" >> {
(foo.bar _).expects(*).once
}
}
'(foo.bar _)的类型是什么?期望(*)。一次?您可以通过为该类型创建一个org.specs2.execute.AsResult实例来解决编译器错误。 – Eric
太棒了,那让我做饭。谢谢。你想在答案中详细说明,我会将其标记为正确的?我建立了一个'AsResult',你基本上总是返回'Success';似乎有点闪避......有关它可能有多糟糕的任何想法?我的意思是,我为“单位”创建了一个似乎破坏整个精神的假设,假设限制在于鼓励使用断言。 – Toby
我不认为你必须为Unit创建一个“全部抓取”AsResult实例,你只需要一个由ScalaMock表达式返回的类型的实例。顺便说一句,这将是一个很好的ScalaMock PR ... – Eric