Используйте Task.FromResult(expected)
mock.Setup(arg => arg.GetScoreByTotalWeighting(value)).Returns(Task.FromResult(expected))
, также я бы рекомендовал избегать value
в качестве параметра, если вы не заботитесь об этом параметре при возврате результата. Вы можете использовать It.IsAny<int>()
, например:
mock.Setup(arg => arg.GetScoreByTotalWeighting(It.IsAny<int>())).Returns(Task.FromResult(expected))
Проблема в том, что вы настраиваете mock.Setup(arg => arg.GetScoreByTotalWeighting(value))
с value == 0
, а затем вызываете survey.GetResult(score)
с 50
. Используйте It.IsAny<int>()
в обоих местах, чтобы избежать этой проблемы, или передайте одно и то же значение:
mock.Setup(arg => arg.GetScoreByTotalWeighting(score))
Решение:
public async Task GetResult()
{
//Arrange
string expected = "test";
var mock = new Mock<IRetreiveQuestionRepository>();
mock.Setup(arg => arg.GetScoreByTotalWeighting(It.IsAny<int>()))
.ReturnsAsync(expected);
var survey = new SurveyResult(mock.Object);
//Act
string result = await survey.GetResult(It.IsAny<int>());
//Assert
Assert.Equal(expected, result);
}