gpt4 book ai didi

java - 如何使用 easymock Capture 进行测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:57 32 4
gpt4 key购买 nike

我有以下代码

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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com