Почему вылетает исключение только в тесте (NUnit C#)?
Вопрос по тесту 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 });
}
Источник: Stack Overflow на русском