所以我有下面的方法,我想对其进行单元测试。
public List<Project> getProjects(Task task) {
Criteria<Project> criteria = this.myRepository.getCriteria(Project.class);
criteria.add(Comparison.eq("order", task.getOrder()));
criteria.addOrder(Order.asc("projectNumber"));
return this.myRepository.findList(Project.class, criteria);
}
所以它实际上获取了任务对象(它是一个 JPA 模型对象)并抛出项目表并找到所有具有该项目订单的项目。两个表中的顺序都很常见。
无论如何,查询本身并不是那么小。它查询数据库并返回一些数据。现在我的问题是如何使用easymock对此进行单元测试?
@Test
public void testGetProjects() throws Exception {
myRepository = new CreateMyRepositoryWrapper(); --> This is a class which just returns the entityManger. but here we can consider this as a pojo.
Task task = EasyMock.createNiceMock(Task.class);
Order bom = EasyMock.createNiceMock(Order.class);
Project project= EasyMock.createNiceMock(Project.class);
project.setProjectName("project"); ------> Can I call a seeter on a mocked object?
project.setProjectNumber("1");
EasyMock.replay(project);
List projects= new ArrayList(Arrays.asList(project));
bom.setProjects(projects); ------------> Does it make sense to do this?
EasyMock.expect(task.getOrders()).andReturn(bom);
TestClass instance = new TestClass();
instance.setMyRepository(myRepository);
EasyMock.replay(task,bom);
instance.getProjects(task);
}
所以这通过了测试用例。但是我不确定所有那些嘲笑我实际测试的东西。因为它只是表明正在调用这些方法。但是由于他们被嘲笑,我不确定我是否可以使用 assertEquals ,即使我可以得到一个异常,因为我认为我必须在上面的代码中添加更多内容。
所以我的问题是:对于提到的方法,正确的单元测试用例应该是什么?
谢谢。