Отладка модульного теста не выполняет определенный метод - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть метод теста, который при вызове должен возвращать строку.

private Mock<API> _api;
private Mock<IResponseHelper> _responseHelper;
private Logic _logic;

[SetUp]
public void SetUp()
{
    _api = new Mock<API>();
    _responseHelper = new Mock<IResponseHelper>();
}

[Test]
[TestCase(HttpStatusCode.OK)]
[TestCase(HttpStatusCode.BadRequest)]
public void Method2_WhenCalled_ReturnAString(HttpStatusCode httpStatusCode)
{
    _api.Setup(api => api.Method1(new List<string> { "a" }, "a"))
        .Returns(Task.FromResult(new HttpResponseMessage { StatusCode = httpStatusCode, Content = new StringContent("") }));

    _responseHelper.Setup(rh => rh.JsonPrettyPrint(
            It.IsAny<HttpResponseMessage>(),
            It.IsAny<string>()))
        .Returns(It.IsAny<string>());

    _logic = new Logic(_api.Object, _responseHelper.Object);

    var result = _logic.Method2(new List<string> { "a" }, "a");

    Assert.That(result, Is.TypeOf<string>());
}

Теперь, когда я запускаю этот тест, бегущий теста скажет, что ожидаемый результат должен быть string, однако он вернулnull.Поэтому, когда я отлаживаю тестируемый метод (_logic.Method2()), он не попадает внутрь метода ResponseHelper, даже если я нажимаю F11.

public string Method2(List<string> ids, string groupId)
{
    var result = _api.Method1(ids, groupId)
                     .Result;

    var prettyString = _responseHelper.JsonPrettyPrint(
        result, 
        "Some random string."); // If I try to press F11 at this point it does not step inside the JsonPrettyPrint method and instead just returns a null value. 

    return prettyString 
}

Что-то не так с тем, как я настраиваю свой метод тестирования?

...