java如何在服务层用相同的方法模拟dao层?
我有点困惑如何测试我的dao层,它包含与我的服务层相同的方法。我设法测试了我的服务层,并一直在琢磨如何测试我的dao层
@Repository
public class DaoImpl implements Dao {
@Autowired
private NamedParameterJdbcTemplate template;
@Override
public Set<MyForm> findSomething(String title, String name, ZonedDateTime datetime) {
String sql= "SELECT * from myTable WHERE title= :d_title AND name = :d_name AND mydatetime= :d_datetime";
SqlParameterSource namedParameters = new MapSqlParameterSource()
.addValue("d_title", title)
.addValue("d_name",name)
.addValue("d_datetime",datetime.withZoneSameInstant(ZoneId.of("UTC")).toOffsetDateTime());
List<MyForm> myForm= template.query(sql, namedParameters, new MyRowMapper());
Set<MyForm> setMyForm = new HashSet<MyForm>(myForm);
return setMyForm ;
}
# 1 楼答案
要测试数据层,可以使用Spring Boots Testslice
DataJdbcTest
在这个testslice中,Spring引导将配置与通过JDBC访问数据相关的所有bean。如果您提供内存中的DB(例如H2),它将自动使用
这种测试的主要思想是通过插入数据来准备数据库,然后使用存储库bean来查询它们
我写了一篇blog post关于这一点(好吧,它是@DataJpaTest,但主要思想是一样的)。也许对你有帮助