我可以帮您翻译成中文,以下是翻译的结果:
当我运行这个单元测试时,抛出了
我有一些测试代码,用于断言通过我的UserRepository
无法创建重复的User
。
User.cs:
public class User
{
public int Id { get; set; }
public string AccountAlias { get; set; }
public string DisplayName { get; set; }
public string Email { get; set; }
public bool IsActive { get; set; }
}
UserRepository.cs:
public class UserRepository
{
public virtual async Task<User> CreateAsync(User entity)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
if (await GetDuplicateAsync(entity) != null)
{
throw new InvalidOperationException("This user already exists");
}
return Create(entity);
}
public async Task<User> GetDuplicateAsync(User user)
{
if (user == null)
{
throw new ArgumentNullException("user");
}
return await (from u in Users
where u.AccountAlias == user.AccountAlias &&
u.Id != user.Id &&
u.IsActive
select u).FirstOrDefaultAsync();
}
}
UserRepositoryTests.cs:
public sealed class UserRepositoryTests : IDisposable
{
public UserRepositoryTests()
{
UserRepository = new UserRepository(new FooEntities()); // DbContext
// from EF
}
private UserRepository UserRepository { get; set; }
[Fact]
public void DuplicateUserCannotBeCreated()
{
var testUser = new User // This test user already exists in database
{
Id = 0,
AccountAlias = "domain\\foo",
DisplayName = "Foo",
Email = "foo@bar.com",
IsActive = true
};
Assert.Throws<InvalidOperationException>(async () =>
await UserRepository.CreateAsync(testUser));
}
public void Dispose()
{
if (UserRepository != null)
{
UserRepository.Dispose();
}
}
}
当我运行这个单元测试时,抛出了
Xunit.Sdk.ThrowsException
异常(也就是我的 InvalidOperationException
没有被抛出):
从调试器中可以看出,Assert.Throws() 失败 预期:System.InvalidOperationException 实际值:(没有抛出异常)
GetDuplicateAsync()
已经被评估,但当 LINQ 查询被执行时,结果从未返回,因此没有异常被抛出。能否有人帮忙?
xUnit
1.9.2。 @dcastro 是对的,我更新了我的xUnit
,问题就解决了。 - rexcfnghk