我们如何为使用SQLDelight的应用程序编写单元测试?

时间:2020-07-29 15:14:03

标签: mysql kotlin mockito sqldelight mockito-kotlin

我正在编写使用SQLDelight生成需要与MySQL数据库进行交互的类的Kotlin JVM应用程序。

如何为使用SQLDelight库生成的类的类/服务编写单元测试?

例如,SQLDelight生成的接口如下:

interface SomeDB : Transacter {
  val someTableQueries: SomeTableQueries

  companion object {
    val Schema: SqlDriver.Schema
      get() = SomeDB::class.schema
    operator fun invoke(driver: SqlDriver): SomeDB = SomeDB::class.newInstance(driver)
  }
}
interface SomeTableQueries : Transacter {
  fun <T : Any> querySomething(name: String, mapper: (
    id: Long,
    name: String,
    address: String
  ) -> T): Query<T>

  fun querySomething(name: String): Query<SomeTable>
}

在我的应用程序中的某个地方,我有myService.findAllAddressForName(name: String),它将执行类似someDB.someTableQueries.querySomething(name)的操作。

那么单元测试myService.findAllAddressForName的最佳方法是什么?

如果我需要使用Mockitomockito-kotlin之类的库,应该模拟哪些类? 有什么更好的办法为我编写这些测试吗?谢谢。

0 个答案:

没有答案