Итак, у меня есть класс AppUser:
@Data
@Builder
@Document(collection = "app_users")
@Component
@AllArgsConstructor
@NoArgsConstructor
@Import(AppConfig.class)
public class AppUser {
@Id
@NotBlank(message = ErrorConstants.ANDROID_USER_ACCOUNT_MANAGER_ID_IS_NULL)
private String androidUserAccountManagerId;
@NotBlank(message = ErrorConstants.NULL_NAME)
private String name;
private Friend bestFriend;
@Setter(AccessLevel.NONE)
private FriendList friendList;
private boolean manualBestFriendOverride;
public Optional<Friend> getFriend(String friendName) {
return friendList.getFriend(friendName);
}
public void calculateBestFriend() {
if (!manualBestFriendOverride) {
bestFriend = friendList.calculateAndReturnBestFriend();
}
}
}
Я создал AppUserRepository
интерфейс, который расширяет MongoRepository
:
@Repository
public interface AppUserRepository extends MongoRepository<AppUser, String> {}
У меня есть класс WebController
, который взаимодействует с интерфейсом. Поле AppUserRepository
в этом классе - @Autowired
. Кажется, что все это работает, но у меня есть несколько вопросов относительно того, как и как я go пересылаю и пишу интеграционные тесты для этого:
- Как мне настроить созданный
AppUserRepository
? Могу ли я запустить его на указанном c порту и c? - Почему
Autowiring
работает, поскольку я не создал этот AppUserRepository
Bean в AppConfig
, как у меня есть другие Beans, которые Autowired
в моем приложении. - Если бы я должен был создать Бин, не пришлось бы мне также реализовать класс и вернуть экземпляр? Я начал это делать, но мне пришлось реализовать все методы классов
MongoRepository
, в которых я не был уверен, что это совершенно правильно. - Как писать интеграционные тесты с
AppUserRepository
? Мне нужно AppUserRepository
для моих запросов для взаимодействия, но я не хочу, чтобы это была та же БД, что и БД приложения реального времени, когда служба запущена и работает. Могу ли я @Autowire
базу данных перейти в класс интеграционных тестов, а затем закрыть БД после запуска интеграционных тестов? Если я так go перехожу, думаю, мне нужно выполнить пункт 3 выше.
Заранее спасибо за помощь, я попытался прочитать некоторую документацию, но я думаю, что мне не хватает некоторых ключевые знания, которые означают, что все это довольно подавляющее и запутанное.
Спасибо!