Почему вылетает исключение только в тесте (NUnit C#)?

Рейтинг: 0Ответов: 0Опубликовано: 30.01.2023

Вопрос по тесту NUnit. Почему в нормальном режиме работы программа не бросает исключение(собственное usernotfound), а при запуске теста оно вылетает, но такой пользователь существует? Как будто при выполнении теста программа не видит такого пользователя. Upd: в отладке теста пользователь (userentity) не находится (null), в отладке проекта - находится. Может быть, дело в базе данных?

public class FriendServiceTest
    {
        UserRepository? UserRepository;
        FriendService? FriendService;
        FriendRepository? FriendRepository;

        [Test]
        public void DeleteFriendMustDeleteFriend()
        {
            UserRepository = new UserRepository();
            FriendService = new FriendService();
            FriendRepository = new FriendRepository();

            var friendEmail = "grinyov29@mail.ru";
            var UserId = 4;
            FriendService = new FriendService();
            FriendRepository = new FriendRepository();
            UserRepository = new UserRepository();

            // вставляем данные в модель
            FriendAddingData friendAddingData = new FriendAddingData();
            friendAddingData.FriendEmail = friendEmail;
            friendAddingData.UserId = UserId;

            //добавляем дружка
            FriendService.AddFriendByEmail(friendAddingData);

            // Пытаемся удалить друга и проверяем, что не бросает исключения(друг был)
            FriendService.DeleteFriend(friendAddingData);

            //  если у заданного пользователя больше нет такого друга с таким email.
            Assert.Throws<ArgumentNullException>(() => FriendService.DeleteFriend(friendAddingData));
        }


    }

Метод, который бросает исключение:

public void AddFriendByEmail(FriendAddingData friendAddingData)
        {
            if (String.IsNullOrEmpty(friendAddingData.FriendEmail))
                throw new ArgumentNullException();

            var findUserEntity = userRepository.FindByEmail(friendAddingData.FriendEmail);
            if (findUserEntity is null) throw new UserNotFoundException();
            var friendEntity = new FriendEntity()
            {
                friend_id = findUserEntity.id,
                user_id = friendAddingData.UserId,

            };
            if (this.friendRepository.Create(friendEntity) == 0)
                throw new Exception();
        }

и вот еще:

 public UserEntity FindByEmail(string email)
        {
            return QueryFirstOrDefault<UserEntity>("select * from users where email = :email_p", new { email_p = email });
        }

Ответы

Ответов пока нет.