我有下一个DAO:
public class MyDaoImpl extends IMyDao {
@Autowired
private JdbcTemplate jdbcTemplate;
// Common DAO methods
}
所以我想创建一个@Test
,在这里我可以调用real方法
@ExtendWith(MockitoExtension.class)
class MyDaoImplTest {
private IMyDao iMyDao;
@BeforeEach
void setUp() {
iMyDao = mock(IMyDao.class);
}
@Test
void testRealInvokation() {
when(iMyDao.someDaoBehaviour())
.thenCallRealMethod();
}
显然,call real方法持有NPE
,因为JdcbTemplate
依赖关系不存在(或者没有连接)。
那么,一般来说,在要测试的类上启用@Autowired
依赖关系的正确过程是什么?
PD:这个想法是为了避免为这样做创建一个构造函数。这很好,但这不是这个想法。只是如何“启用”@Autowired的。
- 谢谢-谢谢
1条答案
按热度按时间fcg9iug31#
你应该总是模拟一个类的依赖关系来编写测试用例,你应该模拟
JdbcTemplate
并返回模拟数据