sto*_*tom 1 .net c# unit-testing async-await
我有async没有任何返回类型的方法,它只有Task类型.
我怎样才能编写有效的单元测试方法Task?
异步方法:
public async Task UploadFileAsync(FileDetails data)
{
await _fileUpload.UploadImageAsync(data);
}
public async Task UploadImageAsync(FileDetails data)
{
// does a async operation to upload a stream to azure blob storage
await azureBlob.UploadFromStreamAsync(streamData).ConfigureAwait(false)
}
Run Code Online (Sandbox Code Playgroud)
测试方法:
[TestMethod]
public async Task UploadFileAsync()
{
//-->Arrange
_fileUpload.Setup(e => e.UploadImageAsync().Returns(new Task<Task>(() => null));
//-->Act
Task result = _uploadManager.UploadFileAsync(GetFakeUploadData());
// Task doesn't return any result ?
//-->Assert
}
Run Code Online (Sandbox Code Playgroud)
更新:
最后我调用此方法将文件上传到azure blob存储.
您只需将法案部分更改为:
//-->Arrange
_fileUpload
.Setup(e => e.UploadImageAsync(It.IsAny<FileDetails>()))
.Returns(Task.FromResult<object>((object)null))
.Verifiable(); //<-- Allows you to verify that the mock was invoked correctly
//Act
await _uploadManager.UploadFileAsync(GetFakeUploadData());
//Assert
_fileUpload.Verify();
Run Code Online (Sandbox Code Playgroud)
参考Moq Quickstart以更好地理解如何使用Moq框架.
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |