我有以下代码
Record rd = registerNewRecord();
<do some processing>
rd.setFinished(true);
updateRecord(rd);
registerNewRecord方法调用RecordDao的insert方法,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 对象也在被更新。所以我不能断言 finished 标志在插入时设置为 false。
我做错了什么?
最佳答案
如果在 insertRC
内引用和 updateRC
都引用同一个对象 rd
这在 update
期间发生了变化方法,您将始终看到 Record
对象已经完成。但是,您可以在 update
之前测试第一个捕获的对象。打电话了。
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 Capture 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826173/