gpt4 book ai didi

java - 使用 junit 和 easymock 持久保存模拟对象

转载 作者:行者123 更新时间:2023-12-01 19:03:01 26 4
gpt4 key购买 nike

所以我在单元测试时使用 easymock 来模拟我的数据层对象。我使用 JPA 来实现持久性。例如。项目project = EasyMock.cre..(Project.class);等等

现在我想测试的方法让这个项目做一些事情,然后调用 persist(project) 来持久化它。项目是一个模拟对象,所以它在这里抛出错误。我的经理告诉我,因为您只想测试该方法的功能。数据库的返回值不是 imp,这就是为什么您应该使用模拟而不是真实的数据库。那么如果这个方法有persist方法调用,我该怎么办?

谢谢。

最佳答案

您应该 mock 实体管理器而不是实体。

实体只是一个您可以轻松创建的pojo,您需要查看是否在实体管理器上调用了持久化。

编辑

看起来您正在通过静态方法在类下的测试中创建实体管理器的实例。没有简单的方法可以模拟它。

您应该使用 dependency injection 将实体管理器传递给使用它的对象。 。然后,您可以只传递模拟实例,而不是传递真正的实现。

所以你的代码看起来像这样:

Project project = ...    

EntityManager manager = EasyMock.createStrictMock(EntityManager.class);
ClassUnderTest test = new ClassUnderTest(manager)

//You expect this to be called
manager.persist(project);

EasyMock.replay(manager);

//The method you are testing
test.save(project);

EasyMock.verify(manager);

(我已经有一段时间没有使用easymock了,所以方法可能不太正确。)

关于java - 使用 junit 和 easymock 持久保存模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11512860/

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