【发布时间】:2021-03-03 14:39:46
【问题描述】:
我有一个单元测试项目,我写了一个测试来检查一个功能:
[Test]
public async Task should_not_be_able_register_user_when_user_with_given_name_already_exists()
{
var mockUserRepository = new Mock<IUserRepository>();
var userService = new UserService(mockUserRepository.Object);
mockUserRepository.Setup(x => x.AddAsync(user));
await userService.RegisterAsync("user", "userLastName", "fakeuser", "user@example.com", "123456789");
}
在这个测试中,我想检查用户何时存在抛出我定义的异常,但我有问题。
-
当我调用 await userService.RegisterAsync... 如何写断言?
Assert.Throws(() => 这里应该是什么?
我的代码: RegisterAsync 看起来像:
public async Task RegisterAsync(string firstName, string lastName, string username, string email, string phoneNumber)
{
var user = await _userRepository.GetAsync(username);
if (user != null)
{
throw new CoreException(ErrorCode.UsernameExist, $"Username {user.Username} already exist.");
}
user = new User(firstName, lastName, username, email, phoneNumber);
await _userRepository.AddAsync(user);
}
获取异步:
public async Task<User> GetAsync(string username)
=> await _context.Users.SingleOrDefaultAsync(x => x.Username == username);
【问题讨论】:
-
每个帖子只应该问一个问题。
标签: c# unit-testing nunit