Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dmcg/k-sera
A JMock wrapper for Kotlin
https://github.com/dmcg/k-sera
Last synced: 24 days ago
JSON representation
A JMock wrapper for Kotlin
- Host: GitHub
- URL: https://github.com/dmcg/k-sera
- Owner: dmcg
- License: apache-2.0
- Created: 2017-01-04T07:44:12.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-01-04T08:08:09.000Z (almost 8 years ago)
- Last Synced: 2024-04-06T23:32:29.220Z (7 months ago)
- Language: Kotlin
- Homepage:
- Size: 29.3 KB
- Stars: 8
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
K-Sera
=====A JMock wrapper for Kotlin.
[KSeraExampleTests](src/test/java/com/oneeyedmen/kSera/KSeraExampleTests.kt)
shows how to write a test.```kotlin
class KSeraExampleTests {// Create a mockery using the usual JMock rule
@Rule @JvmField val mockery = JUnitRuleMockery()// and a mock from the mockery
val charSequence = mockery.mock()@Test fun `expect a call to a mock via the mockery`() {
mockery.expecting {
oneOf(charSequence).length
}
// in this case JMock returns a default value
assertEquals(0, charSequence.length)
}@Test fun `you can specify a (type-checked) return value for a call`() {
mockery.expecting {
oneOf(charSequence).length.which will returnValue(42)
}
assertEquals(42, charSequence.length)// oneOf(charSequence).length.which will returnValue("banana") doesn't compile
}@Test fun `simulate failures with throwException`() {
mockery.expecting {
oneOf(charSequence).length.which will throwException(RuntimeException("deliberate"))
}
assertFails {
charSequence.length
}
}@Test fun `special operators work well`() {
mockery.expecting {
allowing(charSequence)[0].which will returnValue('*')
}
assertEquals('*', charSequence.get(0))
}@Test fun `match parameters with Hamkrest`() {
mockery.expecting {
allowing(charSequence)[with(lessThan(0))].which will returnValue('-')
allowing(charSequence)[with(anything)].which will returnValue('+')
}
assertEquals('-', charSequence.get(-1))
assertEquals('+', charSequence.get(99))
}@Test fun `which-will can take a block and access the call invocation`() {
mockery.expecting {
allowing(charSequence)[with(anything)].which will { invocation ->
(invocation.getParameter(0) as Int).toChar()
}
}
assertEquals(' ', charSequence[32])
assertEquals('A', charSequence[65])
}@Test fun `you can mock functions too`() {
val f = mockery.mock<(Any?) -> String>()
mockery.expecting {
allowing(f).invoke(with(anything)).which will returnValue("banana")
}
assertEquals("banana", f("ignored"))
}// Shall we play a game?
val controlPanel = Panel(
mockery.mock("key1"),
mockery.mock("key2"),
mockery.mock())@Test fun `block syntax for expecting-during-verify`() =
mockery {
expecting {
allowing(controlPanel.key1).isTurned.which will returnValue(true)
allowing(controlPanel.key2).isTurned.which will returnValue(true)
}
during {
controlPanel.pressButton()
}
verify {
oneOf(controlPanel.missile).launch()
}
}@Test fun `given-that allows property references`() =
mockery {
given {
that(controlPanel.key1, Key::isTurned).isProperty withValue (true)
that(controlPanel.key2, Key::isTurned).isProperty withValue (false)
}
during {
controlPanel.pressButton()
}
verify {
never(controlPanel.missile).launch()
}
}}
```k-sera is available at Maven central.