我有以下代码
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());