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.

Buy Me a Coffee at ko-fi.com