У меня есть метод теста, который при вызове должен возвращать строку.
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
}
Что-то не так с тем, как я настраиваю свой метод тестирования?