我想學習如何使用Mockito,我掛斷瞭如何去驗證某個對象上的方法被稱爲X次的次數。Mockito驗證方法調用
我有下面的測試代碼
verify(record, times(1)).setValue(Mockito.any(String.class),Mockito.any(String.class));
和生產代碼下面片我試圖測試
字符串[]的我設立通過
迭代protected String[] columnNames = {"_id", "created_at", "updated_at", "name"};
protected ColumnType[] columnTypes = {ColumnType.INTEGER, ColumnType.TIMESTAMP, ColumnType.TIMESTAMP, ColumnType.TEXT};
和生產代碼這是在一個循環中,通過串[]
迭代這是錯誤我得到
testDataSourceCanFindRecord(com.test.app.DataSourceTest)時間 經過:0.081秒< < <失敗! org.mockito.exceptions.verification.TooManyActualInvocations: customer.setValue(,);通緝1次: - > at com.test.app.DataSourceTest.testDataSourceCanFindRecord(DataSourceTest.java:141) 但是3次。不希望調用: - >在com.test.core.DataSource.cursorToRecord(DataSource.java:210)
我期待record.setValue(String鍵,字符串值)被稱爲由於一次String []中的「name」字段。發生什麼事是Mockito註冊record.setValue(字符串鍵,長值)作爲record.setValue(字符串鍵,字符串值),這是不正確的。第210行是TIMESTAMP情況下的setValue。我怎樣才能糾正這一點?
你如何創建'cursor'?我認爲使用真實的「記錄」對象而不模仿並在從光標設置它們後驗證這些值是否正確會容易得多。 – 2013-05-14 04:20:19
我在嘲笑光標。我嘲笑除了正在測試的DataSource類以外的所有東西。我仍然試圖弄清楚什麼是模擬,什麼不該 – David 2013-05-14 04:26:15