Я безуспешно пытаюсь протестировать настройку репозитория Delete
метод:
[SetUp]
public void Setup()
{
var admin = new User
{
Id = ADMIN_USER_ID,
Name = "admin",
Lastname = "admin",
Username = "admin"
};
var normalUser = new User
{
Id = USER_ID,
Name = "user",
Lastname = "user",
Username = "user"
};
_userList.Add(admin);
_userList.Add(normalUser);
_userRepository.Setup(u => u.DeleteAsync(It.IsAny<string>())).Callback((string id) =>
{
var user = _userList.Find(p => p.Id == id);
if (user != null)
_userList.Remove(user);
});
_userRepository.Setup(u => u.AddAsync(It.IsAny<User>())).Returns((User u) =>
{
u.Id = Guid.NewGuid().ToString();
_userList.Add(u);
return Task.CompletedTask;
});
}
[Test]
public void Should_Delete_Normal_User()
{
var service = GetService();
service.DeleteUser(USER_ID); // Here should run Synchronously using .Wait()
Assert.ThrowsAsync<UserNotFoundException>(() => service.GetUser(USER_ID));
}
Этот метод проходит успешно, но если я поставлю .Wait()
после service.DeleteUser(USER_ID)
, тест не выполняется.Не проходит, потому что он генерирует неожиданное исключение NullException.
Методы service и repository имеют значение async
и возвращают только пустой Task
объект.