jOOQ 3.5.0jOOQ : DAO 객체를 조롱하다
현재 jOOQ 생성 DAO 객체를 사용하는 리소스에 대한 단위 테스트를 작성하려고합니다.
DAO 계층 구조의 기본 클래스 (DAOImpl
) 중 하나가 모방에 불친당하게 만드는 많은 final
메서드를 가지고 있음을 알았습니다. (솔루션으로 Powermock과 같은 바이트 코드 조작기는 제외합니다). 현재 MockConnection
과 MockDataProvider
패턴을 사용하여 DAO를 채우고 있지만 DAO 메소드 호출을 선언하기에는 약간 낮은 것처럼 보입니다.
예를 들어, 내 리소스는 FooDao.createFoo(foo)
이고 테스트의 요지는 MockDataProvider.execute(...)
이며 원시 SQL과 바인딩 개체 배열 값을 가진 컨텍스트 개체를 제공합니다.
create
이 호출되었다는 것을 테스트에 알리기 위해서는 원시 SQL을 평가해야합니다. DAO가 훌륭하고 유창한 방법을 주장 할 때 이와 같은 일을하는 것은 낭비입니다.
내 질문은 : 거기에 단위 테스트 DAO 사용하는 더 나은 방법은 무엇입니까? 나는 간단한 계약을 테스트하기 위해 보일러 플레이트 많이 필요 같은
FooDao fooDao = createMock(FooDao.class);
....
when(fooDao.fetchById(id)).thenReturn(foo);
훨씬 더 바람직
example in the docs하는 것입니다 .... 보인다.
당신이 Powermock를 사용하여 무엇 유지? –
또는 DAOImpl 대신에 ['DAO'] (http://www.jooq.org/javadoc/3.5.x/org/jooq/DAO.html)를 사용하고 인터페이스를 프로그래밍 (즉 모의) 할 수 있습니까? ? – Xaerxess
@Xaerxess'FooDao'와'DAO' 사이에 너무 많은 세부 사항이 있습니다. 이것은 모든 DAO가 깨끗한 테스트를 작성할 수 있도록 나를위한 보일러 플레이트가 많이 있다는 것을 의미합니다. – markdsievers