dave08
03/23/2021, 8:58 AMTODO()
in the subject's function being called... by stepping through the code, I see that code is reached, but the test passes... 🤯LeoColman
03/23/2021, 10:19 AMLeoColman
03/23/2021, 10:20 AMdave08
03/23/2021, 10:23 AM@RobolectricTest
class SyncAuthenticationTest : FreeSpec() {
init {
"A device with an account" - {
"Use the account info to get an access token with a direct grant" {
val subject = SomeObject(account)
val result = subject.getAuthToken()
result shouldBe "-- access token --"
}
}
}
}
class SomeObject {
fun getAuthToken(): String { TODO() }
}
dave08
03/23/2021, 10:24 AMLeoColman
03/23/2021, 10:26 AMLeoColman
03/23/2021, 10:26 AMLeoColman
03/23/2021, 10:26 AM@RobolectricTest
class Testit : FreeSpec({
"A device with an account" - {
"Use the account info to get an access token with a direct grant" {
val subject = SomeObject()
val result = subject.getAuthToken()
result shouldBe "-- access token --"
}
}
})
class SomeObject {
fun getAuthToken(): String { TODO() }
}
dave08
03/23/2021, 10:27 AMprivate val syncApi = WireMockServer(
private var syncApi: Lazy<WireMockServer> = lazy { WireMockServer(
WireMockConfiguration.options()
.port(30111)
.notifier(ConsoleNotifier(true))
)
private val am = AccountManager.get(getApplicationContext())
) }
private lateinit var am: AccountManager
init {
listener(WireMockListener(syncApi, ListenerMode.PER_SPEC))
beforeSpec {
am = AccountManager.get(getApplicationContext())
}
listener(LazyWireMockListener(syncApi, ListenerMode.PER_SPEC))
dave08
03/23/2021, 10:28 AMclass LazyWireMockListener(
private val server: Lazy<WireMockServer>,
private val listenerMode: ListenerMode
) : TestListener {
override suspend fun beforeTest(testCase: TestCase) {
if (listenerMode == ListenerMode.PER_TEST) {
server.value.start()
}
}
override suspend fun afterTest(testCase: TestCase, result: TestResult) {
if (listenerMode == ListenerMode.PER_TEST) {
server.value.stop()
}
}
override suspend fun beforeSpec(spec: Spec) {
if (listenerMode == ListenerMode.PER_SPEC) {
server.value.start()
}
}
override suspend fun afterSpec(spec: Spec) {
if (listenerMode == ListenerMode.PER_SPEC) {
server.value.stop()
}
}
companion object {
fun perSpec(wireMockServer: Lazy<WireMockServer>) = LazyWireMockListener(wireMockServer, ListenerMode.PER_SPEC)
fun perTest(wireMockServer: Lazy<WireMockServer>) = LazyWireMockListener(wireMockServer, ListenerMode.PER_TEST)
}
}
enum class ListenerMode {
PER_TEST,
PER_SPEC
}
dave08
03/23/2021, 10:29 AMdave08
03/23/2021, 10:31 AM