我该如何测试一个返回布尔值的方法,并且像这样实现?单元测试JPA查询
return entityManager.createQuery("SELECT(i) FROM Items i WHERE o.id=:id", Long.class).setParameter("id", id).getSingleResult() == 1;
entityManager
被注入课堂。
我想我大概应该验证createQuery
被调用此查询,然后setParameter
被调用id
,然后进行比较,然而结果是,没有这样的测试一个简单的代码行像有点大材小用这个? 我特别觉得在单元测试中使用整个select语句会感到不舒服。这似乎更像是我的实现细节。但是,还有什么其他方式来检查查询是否实际检查了COUNT项并执行其他操作?
用一般的经验法则来增加这个(正确的)答案:用集成测试测试应用程序边界处的代码(在这种情况下是应用程序 - DB);在单元测试中测试只依赖于你的应用的其他“部分”的代码 – crizzis