I´m trying without success to test a setup a repository Delete
method:
[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));
}
This method Test pass, but if I put the .Wait()
after the service.DeleteUser(USER_ID)
the test doesn´t pass because it throws an unexpected NullException.
Both the service and repository methods are async
and returns only a empty Task
object.