【发布时间】:2019-04-17 04:38:25
【问题描述】:
我正在使用 NUnit 和 NSubstitute 在 C# 中进行一些单元测试。我有一个名为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 返回带有 HttpStatusCode.BadRequest 的 HttpResponseMessage,以便我可以测试是否引发了异常。
测试方法如下:
[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:对象引用未设置为对象的实例。
我做错了什么?
【问题讨论】:
标签: asp.net unit-testing async-await nunit nsubstitute