Create a mock #
The syntax to create a mock is very similar in Mockito and MockK. However, the behaviour is slightly different.
// Mockito val mockedFile = mock(File::class.java) mockedFile.read() // does nothing
// MockK val mockedFile = mockk<File>() mockedFile.read() // throws because the method was not stubbed
Mocked objects in MockK resemble Mockito’s
STRICT_STUBS mode by default. If a method is not stubbed, then it will throw. This makes it easier to catch methods that are being called when you do not expect it, or when methods are being called with different arguments.
Mockito’s default lenient behaviour can be replicated with the
relaxed setting. Relaxed mocks will have default stubs for all methods.
// MockK val mockedFile = mockk<File>(relaxed = true) mockedFile.read() // will not throw
If desired, you can choose to only relax methods that return
// MockK val mockedFile = mockk<File>(relaxUnitFun = true) mockedFile.read() // returns Unit, will not throw mockedFile.exists() // throws as the method returns Boolean