Я занимаюсь модульным тестированием в C # с использованием NUnit и NSubstitute.У меня есть класс с именем Adapter
, у которого есть метод GetTemplates()
, я хочу провести модульное тестирование.GetTemplates()
использует httpclient
, который я смоделировал с помощью интерфейса.
Вызов в GetTemplates
выглядит примерно так:
public async Task<List<Template>> GetTemplates()
{
//Code left out for simplificity.
var response = await _client.GetAsync($"GetTemplates");
if (!response.IsSuccessStatusCode)
{
throw new Exception();
}
}
Я хочу, чтобы _client.GetAsync
вернулHttpResponseMessage
с HttpStatusCode.BadRequest
, чтобы я мог проверить, генерируется ли исключение.
Метод теста выглядит следующим образом:
[Test]
public void GetTemplate_ReturnBadRequestHttpMessage_ThrowException()
{
//Arrange.
var httpMessage = new HttpResponseMessage(HttpStatusCode.BadRequest);
_client.GetAsync("").Returns(Task.FromResult(httpMessage));
//Act.
var ex = Assert.ThrowsAsync<Exception>(async () => await _Adapter.GetSigningTemplates());
//Assert.
Assert.IsInstanceOf<Exception>(ex);
}
Когда метод запущен, он возвращает
System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
Что я сделал не так?