Я использую scalatest вместе с scalamock для моего небольшого проекта. Я создал черту и класс вместе со своим сопутствующим объектом.Scala - Есть ли способ издеваться над чертой, расширенной сопутствующим объектом?
trait A{
def getSomething(arg1)
}
class B(field1)....
object B extends A{
def apply(arg1) = new B(getSomething(arg1))
}
Код работает отлично, но проблема возникает при тестировании этого кода. Юнит-тестирование должно быть зависимы друг от друга, поэтому я должен как-то издеваться/заглушкой черта A:
val fakeA = stub[A]
(fakeA.getSomething _).when(arg).returns(res)
А теперь ... Как я должен использовать эту высмеивал черту в моей модульного тестирования? Mocking создает объект (а не тип), и с таким кодом я не могу «передать его» моему объекту (или использовать с). Как я могу достичь своей цели (заглушить/mock getSomething() внутри моего объекта B)? Я попытался разделить объект B на Blogic и B, расширяющий Blogic. Но что тогда?
Какую логику вы на самом деле пытаетесь проверить здесь? Кто использует насмешливый метод? – Dima
Изделенный метод будет использоваться в моем модульном тесте. Здесь я хотел бы проверить, применит ли метод apply действительный объект (т. Е. Он присваивает правильные значения (возвращаемые методом Im, пытающимся имитировать) в соответствующие поля моего класса B. – DorianOlympia
Просто выполните 'new B (whateverYourMockWouldReturn)' then и испытайте это. – Dima