728x90

테스트 중 아래 Bean을 생성하지못한다는 에러가 발생했다.
@Autowired
PasswordEncoder passwordEncoder;
@DataJpaTest
class UsersRepositoryTest {
private String name = "test";
private String email = "testEmail";
private String password = "testpwd";
private Role role = Role.USER;
private Provider provider = Provider.LOCAL;
private String providerId = "testproviderid";
@Autowired
UserRepository userRepository;
@Autowired
PasswordEncoder passwordEncoder;
@Test
public void 유저_등록() {
//given
final User users = User.builder()
.name(name).email(email).password(passwordEncoder.encode(password)).build();
//when
final User result = userRepository.save(users);
// then
assertThat(result.getId()).isNotNull();
assertThat(result.getName()).isEqualTo(name);
// Verify that the password is encoded
assertThat(password).isNotEqualTo(result.getPassword());
}
}
[해결방법]
단위테스트중에서 Bean들 중에서는 자동으로 설정되지 않는 경우가 있습니다.
@DataJpaTest는 JPA 관련 설정만을 포함하므로 따로 설정해주고나서 Import 해주어야합니다.
그게 싫다면, @SpringBootTest를 사용하면 Spring Boot 애플리케이션 컨텍스트가 통합되므로, 설정에 대한 직접적인 지정이 필요 없습니다. 하지만 주의할 점은 @SpringBootTest는 더 많은 리소스를 사용하므로 필요한 테스트 범위에 따라 적절한 선택이 필요합니다.
저는 일단 TestConfig 클래스를 작성하여 import 하려고 합니다.
@TestConfiguration
public class TestConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
}


잘돼는 것을 확인했습니다.!
'Trouble Shooting' 카테고리의 다른 글
| [Git] remote: Invalid username or password. (0) | 2023.09.15 |
|---|---|
| [Linux] FirewallD is not running (0) | 2023.09.08 |
| filzila로 전송이 안됄때 (0) | 2023.09.05 |
| [Linux] Web server failed to start. Port 8080 was already in use. (0) | 2023.08.13 |
| [Git] Authentication failed for ‘https://github’ (0) | 2023.08.13 |