我正在尝试为调用异步存储库的类创建单元测试.我正在使用ASP.NET Core和Entity Framework Core.我的通用存储库看起来像这样.
public class EntityRepository<TEntity> : IEntityRepository<TEntity> where TEntity : class
{
private readonly SaasDispatcherDbContext _dbContext;
private readonly DbSet<TEntity> _dbSet;
public EntityRepository(SaasDispatcherDbContext dbContext)
{
_dbContext = dbContext;
_dbSet = dbContext.Set<TEntity>();
}
public virtual IQueryable<TEntity> GetAll()
{
return _dbSet;
}
public virtual async Task<TEntity> FindByIdAsync(int id)
{
return await _dbSet.FindAsync(id);
}
public virtual IQueryable<TEntity> FindBy(Expression<Func<TEntity, bool>> predicate)
{
return _dbSet.Where(predicate);
}
public virtual void Add(TEntity entity)
{
_dbSet.Add(entity);
}
public virtual void Delete(TEntity entity)
{
_dbSet.Remove(entity);
}
public virtual …Run Code Online (Sandbox Code Playgroud) 我有一个方法的查询:
private readonly IEntityReader<Customer> _reader;
public async Task<IEnumerable<Customer>> HandleAsync(GetCustomer query)
{
var result = _reader.Query()
.Include(customer => customer.Organization)
.Where(customer => customer.Name == query.Name);
return await result.ToListAsync();
}
Run Code Online (Sandbox Code Playgroud)
哪个具有此单元测试:
[Fact]
public async Task HandleGetCustomer_ReturnsCustomer_WhenNameMatches()
{
// Arrange
var customers = new List<Customer>()
{
new Customer
{
Id = new Guid("d4e749ba-6874-40f4-9134-6c9cc1bc95fe"),
Name = "John Doe",
Age = 18,
Organization = new Organization
{
Id = new Guid("b2ba06c9-5c00-4634-b6f7-80167ea8c3f1"),
Name = "TheCompany",
Number = 42
}
},
new Customer
{
Id = new Guid("0679ceb5-3d4f-41f3-a1b0-b167e1ac6d7e"), …Run Code Online (Sandbox Code Playgroud)