java-如何使用easymock Capture测试

我有以下代码

Record rd = registerNewRecord();
<do some processing>
rd.setFinished(true);
updateRecord(rd);

registerNewRecord方法调用RecordDao插入方法,而updateRecord调用同一DAO上的update方法.

我有以下easymock代码:

Capture<Record> insertRc = new Capture<Record>();
RecordDao.insert(capture(insertRc));
Capture<Record> updateRc= new Capture<Record>();
RecordDao.update(capture(updateRc));

问题在于,由于第rd条记录中插入的Record实例正在更新,insertRc Capture对象也正在更新.所以我不能断言在插入时完成标志设置为false.

我究竟做错了什么?

解决方法:

如果insertRC和updateRC中的引用均引用相同的对象rd,并且在update方法期间对其进行了更改,则您将始终看到Record对象已完成.但是,您可以在进行更新调用之前测试第一个Captured对象.

Capture<Record> insertRc = new Capture<Record>();
RecordDao.insert(capture(insertRc));
Record insertedRecord = insertRC.getValue();
org.junit.Assert.assertFalse(insertedRecord.isFinished());

Capture<Record> updateRc= new Capture<Record>();
RecordDao.update(capture(updateRc));
Record updatedRecord = updateRC.getValue();
org.junit.Assert.assertTrue(updatedRecord.isFinished());
上一篇:java-检查EasyMock模拟是否处于重播模式/状态


下一篇:java – 类数据类型的EasyMock匹配器