当我们在测试类上调用db时EasyMock

时间:2012-07-16 06:17:50

标签: java junit easymock

我正在测试一个让我们用JUnit说MyClass的类。我正在使用easymock来隔离对db的需求。它工作正常。因此,如果调用模型对象,我只是模拟该对象。 例如。如果我有

public void method(Project project) { project.getName(); ..}

在MyClass中我只使用mockedProject。然后我说MyClass.method(mockedProject); 但是如果我在MyClass中有this.getName()怎么办?在这种情况下,因为我想要我正在测试的类的真实对象(MyClass)我不能模拟MyClass对象。因此,我无法为MyClass对象定义返回值,因为它是一个真实对象。请记住,getName()会抛出我不希望它去的数据库。

在这种情况下,当我有this.method()并且该方法适用于db时,我该怎么办? 我无法模仿我正在测试的这个对象。 谢谢。

2 个答案:

答案 0 :(得分:1)

如果您能够模拟用于访问数据库的类,那么执行该操作,然后this.getName()将使用模拟的类,并将获得您定义的任何数据。

如果无法模拟数据库访问类,那么你无法真正做任何事情。

<强>更新

测试JPA实体可能有点棘手,如果你可以通过各种方式模拟实际实体,那么去它并让它返回任何你喜欢的而不是DB结果。但我不确定这是可能的。

我建议您查看herehere以获得更详细的示例。

答案 1 :(得分:0)

你应该模拟在MyClass.getName()中访问数据库的类(例如EntityManager)并记录这些模拟的所需行为