【发布时间】:2016-02-04 01:29:43
【问题描述】:
与 Finatra 合作并尝试模拟数据库调用以进行测试。我正在使用定义此方法的finagle-postgres:
def prepareAndQuery[T](sql: String, params: Any*)(f: Row => T): Future[Seq[T]] = {...}
使用Mockito 的其他模拟非常简单。但是,我似乎无法让这个工作。在与编译器苦苦挣扎后,我终于找到了这个,但它在运行时不起作用:
case class Foo( a: Int, b: Int, c: Int )
val client = smartMock[Client]
def f(row:Row): Foo = {
Foo(1,2,3)
}
client.prepareAndQuery[Foo]("select 1") returns { x => f(x) }
执行测试抛出:
org.mockito.exceptions.verification.SmartNullPointerException:
...
because this method call was *not* stubbed correctly:
我是 Mockito 的新手,我还没有找到模拟带有函数参数的函数的示例。对我的模拟错误有什么想法吗?
【问题讨论】:
-
如果你想用基于 JDBC 的持久层进行单元测试/模拟,可以看看tour.acolyte.eu.org
标签: postgresql scala unit-testing mockito finagle