Alexandre Brown
12/22/2021, 7:41 PMMockkAnnotations.init(this)
inside the beforeEach
block and I use lateinit var
on my mocks. Is this bad or is this the recommended way?
I find that using val
is not always possible as sometimes you have some expectations to setup first.
class MyClassTest : StringSpec() {
private lateinit var myClass: MyInterface
@RelaxedMockK
private lateinit var myMock1: MockableThing1
@RelaxedMockK
private lateinit var myMock2: MockableThing2
init {
beforeEach {
MockKAnnotations.init(this)
myClass = MyClass(
myMock1,
myMock2
)
}
}
...
LeoColman
12/22/2021, 8:39 PMclass MyClassTest : StringSpec({
val myMock1 = mockk<MockableThing1>
val myTarget = MyClass(myMock1)
"MyTest" {
every { <http://myMock1.xyz|myMock1.xyz>() } returns "ABC"
<http://myTarget.xyz|myTarget.xyz>()
}
})
OR
class MyClassTest : StringSpec({
val myMock1 = mockk<MockableThing1> {
every { <http://myMock1.xyz|myMock1.xyz>() } returns "ABC"
}
val myTarget = MyClass(myMock1)
"MyTest" {
<http://myTarget.xyz|myTarget.xyz>()
}
})
mockk(relaxed = true)
to replacec @RelaxedMockkAlexandre Brown
12/22/2021, 8:42 PMLeoColman
12/22/2021, 8:50 PMverify
Alexandre Brown
12/22/2021, 8:51 PMIsolationMode.InstancePerTest
thank you
Just tried your approach, way less boilerplate, I love it!