我試圖用mockito來嘲笑Query類的JDBI,但是它不能嘲笑其基類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 ....
任何想法如何解決這個問題?
這不是一個答案,但根據我的經驗,嘲笑這種DAO代碼是浪費時間。它不會暴露您在使用JDBI API時所犯的錯誤。根據真實的數據庫編寫測試。 – artbristol