엽킹
121
2021-10-14 15:11:59 작성 2021-10-14 15:13:37 수정됨
0
66

kotlin SpringBoot DAO JdbcTemplate TestCode 질문드립니다.


안녕하십니까 10개월차 주니어개발자입니다. 

회사 프로젝트에서 테스트 코드를 아무도 안하여 제가 한번 해보려고 노력중이나 

구글검색에 나온 예제들을 적재적소하지 못하여 질문글을 남깁니다.

희한하게 kotlin언어를 쓰면서 spring boot를 사용합니다 그래서 자바랑 조금 다릅니다. 

테스트 코드에 대해서는 이해를 하였고 기대값 원하는값을 비교하는부분은 이제 어느정도 할줄안다고 생각합니다.

근데 database sql query 문 테스트를 할때 어떻게 해야하는지 감이 안오네요 

밑에 테스트 코드 남기겠습니다.


@RunWith(SpringJUnit4ClassRunner::class)
class UserServiceIntergrationTest {

    @InjectMocks
    private lateinit var storkService: StorkServiceImpl

    @InjectMocks
    private lateinit var storkDao: StorkDAOImpl

    @Test
    fun DaoTest() {

        //given
        val map: MutableMap<String, String> = mutableMapOf()
        map.put("materialCompany", "105")

        //when
        val list : ArrayList<VO.SkuVal>? = storkDao?.getMaterialsSkuListPart(map) as ArrayList<VO.SkuVal>?

        //then
         assertEquals("",list)
    }
}




밑에 코드는 DAOImpl입니다.


override fun getMaterialsSkuListPart(data: MutableMap<String, String>): MutableList<VO.SkuVal>?{
try {
var materialCompany = data.get("materialCompany")

var sql = "select id,skuName,skuNameDetail,availableStock" +
"from testDB" +
"where materialCompany = 105"

template?.queryForRowSet(sql)?.run {
return ArrayList<VO.SkuVal>().apply {
while (next()){
add(VO.SkuVal(
0,
getString("id"),
getString("skuName"),
getString("skuNameDetail"),
getInt("availableStock")
))
}
}
}

} catch (e: Exception) {
println(e.message)
e.printStackTrace()
}
return null
}

일단 제가 원하는건 비교값 기대값이라기보다 제가 원하는 값을 넣고 dao단에 query를 돌리면 

테이블에 대한 리스트들이 나오는걸 생각하고있습니다만 

        template?.queryForRowSet(sql)?.run {

여기서 null이 뜨면서 바로 밑으로 내려가서 null을 반환합니다.

저는 여기서 

            return ArrayList<VO.SkuVal>().apply {

이 return값을 list로 보고싶은데 어떻게 해야하는지 조언좀 부탁드리겠습니다.




0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.