Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 1039 Vote(s) - 3.49 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Can you verify a property setter using mockk?

#1
We had a few tests in Java and Mockito, which we are progressively converting into Kotlin and Mockk. There's a problem, though. This simple line:

`verify(mockedInteractor).setIndex(1);`

When we move it to mockk, we get this:

`verify { mockedInteractor.index = 1 }`

This of course passes the tests, as it's not actually checking that `index` was set to 1. It's simply setting the mock's variable to 1. This below has the same effect.

`verify { mockedInteractor.setIndex(1) }`

Is there a way to verify setters?
Reply

#2
Yes you can:

verify { mockedInteractor setProperty "index" value 1 }

There are more examples in here

[To see links please register here]

Reply

#3
You could try capture:

val fooSlot = slot<String>()
val mockBar = mockk<Bar>()
every { mockBar.foo = capture(fooSlot) } answers { }
assertEquals(fooSlot.captured, "expected")
Reply

#4
Compact solution without hardcoded string:

verify { mockedInteractor setProperty MockedInteractor::index.name value 1 }

where `MockedInteractor` is `mockedInteractor` class
Reply

#5
You can now relax this requirement for unit functions when defining your mock.

```kotlin
val foo = mockk<Foo>(relaxUnitFun = true)
```

Enabling this setting on your mock means you will not need to use `justRun` or any variation of that code (as per the [Mockk documentation][1]) when verifying unit functions are invoked.


[1]:

[To see links please register here]

Reply

#6
I'm wondering if this was asked about an earlier version of Mockk, afterall, it *is* and old question.
```
verify { mockedInteractor.index = 1 }
```
does exactly what it says - it verifies that `mockedInteractor.index` was set to `1`.
If you don't believe me, try it. Try setting `mockedInteractor.index` to something other than `1` in the product code and watch this test fail.

Maybe this was a Mockk bug that has since been fixed.
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through