【发布时间】:2020-06-21 14:10:35
【问题描述】:
我正在使用 XUnit 和 Moq 从我的逻辑层测试代码。我的逻辑层还与数据层通信,因此我想模拟接口以保持测试简单。
我想知道当我调用异步任务方法时应该如何返回Task<string>。我的GetOrder 方法调用GetOrderById 但数据层方法返回null。
编辑:我根据所有反馈更改了我的单元测试。现在可以正常使用了。
我的测试:
public async void GetOrder()
{
//Arrange
string expected = "test";
var mock = new Mock<IRepository>();
mock.Setup(arg => arg.GetOrderNameById(It.IsAny<int>())
.Returns(Task.FromResult(expected));
var survey = new SurveyResult(mock.Object);
//Act
string result = await survey.GetOrderNameById(It.IsAny<int>()));
//Assert
Assert.Equal(expected, result);
}
【问题讨论】:
-
仅供参考 如果您在
string result = await survey.GetResult(score);之后有Assert.Equal(expected, result);就足够了,并且您不必返回布尔值进行单元测试 -
您的测试未显示
async void用法
标签: c# unit-testing task-parallel-library moq