我正在尝试使用 mockito 模拟 JDBI 的Query类,但是它无法模拟其基类的方法SqlStatement
。
当运行下面的代码时,when 语句实际上是在调用基类中的具体实现,并以NullPointerException
.
import java.util.Map;
import org.junit.Test;
import org.skife.jdbi.v2.Query;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class TestClass {
@Test
public void testBind() {
Query<Map<String,Object>> mockQuery = mock(Query.class);
when(mockQuery.bind("xxx", 5)).thenReturn(mockQuery); //this line fails
//more stuff here
}
}
我也用 EasyMock 尝试过,得到了相同的结果,它无法模拟这种方法。
更多信息:
- Mockito 版本是 1.9.5
- JDBI 版本是 2.4.1(当前与 dropwizard 一起提供的版本)
例外是:
java.lang.NullPointerException
at org.skife.jdbi.v2.SQLStatement.bind(SQLStatement.java:434)
at TestClass.testBind(TestClass.java:17)
at ....
任何想法如何解决这个问题?