我正在使用Visual Studio 2013和MSTest对我的异步方法进行单元测试。我有如下的异步方法:
public async Task<Client> AddClientAsync(Client newClient)
{
newClient.ObjectState = ObjectState.Added;
base.Insert(newClient);
await unitOfWorkAsync.SaveChangesAsync();
return newClient;
}
UnitOfWorkAsync SaveChangesAsync()方法:
public Task<int> SaveChangesAsync()
{
return _dataContext.SaveChangesAsync();
}
数据上下文SaveChangesAsync()方法:
public override async Task<int> SaveChangesAsync()
{
return await this.SaveChangesAsync(CancellationToken.None);
}
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken)
{
SyncObjectsStatePreCommit();
var changesAsync = await base.SaveChangesAsync(cancellationToken);
SyncObjectsStatePostCommit();
return changesAsync;
}
我已经编写了以下单元测试方法来测试它。
[TestMethod]
public async Task AddClientAsync_Success()
{
Client client = new Client()
{
Id=2,
FirstName="John",
LastName="Tylor",
MaritalStatusId=1,
RecordStatus=1
};
var result = await clientAppService.AddClientAsync(client);
Assert.IsNotNull(result);
}
当我运行/调试测试用例控件到达下面的行并且永远不会返回。它有点卡住并且在这条线上无休止地等待并且测试永远不会完成。
await unitOfWorkAsync.SaveChangesAsync();
知道我在这里缺少什么吗?
更新:它执行SaveChangesAsync()方法,该方法也返回结果,但该测试的后期永远不会完成。