Mock constructors in code you don’t own #
Sometimes your classes have dependencies that they construct themselves. While it’s best to use a system like dependency injection to avoid this, MockK makes it possible to control constructors and make them return a mocked instance.
The mockkConstructor(T::class)
function takes in a class reference. Once used, every constructor of that type will start returning a singleton that can be mocked. Rather than building a new instance every time the constructor is called, MockK generates a singleton and always returns the same instance. This will apply to all constructors for a given class, there is no way to distinguish between them.
The mocked result can be obtained by using anyConstructed<T>()
. Using this function, stubbing and verification can be done just like any other mock.
Unmocking #
If you’d like to revert back to the real constructor, you can use the unmockkConstructor
method. This removes any stubbed behaviour you may have added.