我想学习如何使用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