scalamock / specs2: Что делать, если у меня нет утверждений? Ожидания только в IsolatedMockFactory
Если у меня нет явных утверждений, таких как count must_== 1
a в тесте Specs2 я получаю ошибку, указывающую, что неявное не может быть найдено.
// doesn't compile
class Example extends Specification {
"You need an assertion" >> {
// hello!
}
}
Справедливо.
Но если я тоже использую скаляки MockContext
Я могу полагаться только на ожидания, а не на утверждения; mock что-то, и 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
}
}
1 ответ
Пример в specs2 принимает все, что имеет org.specs2.execute.AsResult
экземпляр класса типов. поскольку (foo.bar _).expects.once
имеет тип CallHandler
Вы можете создать AsResult
экземпляр для CallHandler
который просто оценивает значение и возвращает Success
implicit def CallHandlerAsResult[R : Defaultable]: AsResult[CallHandler[R]] = new AsResult {
def asResult(c: =>CallHandler[R]) = {
c
Success
}
}
Поскольку сбои основаны на исключениях в ScalaMock, это должно привести к возникновению исключения, если какое-либо фиктивное ожидание не будет удовлетворено.