Я пытаюсь проверить мой класс DAO, который имеет 2 зависимости, dataSource
и stringCrypto
, но приложение продолжает выдавать
Failed to obtain JDBC Connection: DataSource returned null from getConnection(): dataSource
зависимость источника данных, которую я пытаюсь смоделировать,bean-компонент, который использует JndiDataSourceLookUp
, то есть
@Bean
public DataSource dataSource() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
dataSourceLookup.setResourceRef(true);
DataSource dataSource = dataSourceLookup.getDataSource("castle/db");
return dataSource;
}
Это класс DAO
public class PersonDAOImpl implements PersonDAO {
@Autowired
private DataSource dataSource;
@Autowired
private Cryptography stringCrypto;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Override
public List<Member> getAllMembers() {
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
try {
List<Member> members = namedParameterJdbcTemplate.query(SqlStatement.GET_ALL_MEMBERS,
new MemberExtractor());
return members;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
, как вы можете видеть в этом классе, у него есть 2 зависимости, которые я пытаюсьмакет в тестовом классе ниже
@RunWith(SpringRunner.class)
public class MembersControllerTest {
@Mock
DataSource dataSource;
@Mock
Cryptography stringCrypto;
@InjectMocks
PersonDAOImpl personDAOImpl;
@BeforeEach
void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test() {
assertTrue(personDAOImpl.getAllMembers().size() > 0);
}
}
я пытался добавить
@PostConstruct
private void initialization() {
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
, но это не работало, и всякий раз, когда я запускаю свой тест, он выбрасывает, не получая соединение jdbc.Исключения, которые выдают, бесполезны, и все другие подобные вопросы касаются настройки с помощью XML, и принятые ответы предлагают некоторую конфигурацию XML, которую я, честно говоря, не очень понимаю, и я даже не хочу использовать XML в своихприменение.Я действительно искал почти все связанные вопросы и не нашел ни одного из них полезным, поэтому я решил задать его.
заранее спасибо