Нет, это невозможно.Все mocks являются подклассами типа для mock, поэтому конструктор всегда будет вызываться.Однако вы можете создать макеты для типов, используемых в конструкторе, и указать конкретный подтип.Например,
import ConstructorWorkaroundTest.{HardToMock, Something}
import org.scalamock.scalatest.MockFactory
import org.scalatest.FunSuite
class ConstructorWorkaroundTest extends FunSuite with MockFactory {
test("does not work") {
val m = mock[HardToMock]
}
test("works") {
val s = stub[Something]
class BetterToMock extends HardToMock(s)
val m = mock[BetterToMock]
m.foo _ expects() returning "hello" once()
m.foo()
}
}
object ConstructorWorkaroundTest {
trait Something { def length: Int }
class HardToMock(s: Something) {
val naughty = s.length
def foo() = "hi"
}
}