我有一个函数,可以将数据保存到couch db数据库中,它是一个无返回值的任务方法。我想进行单元测试,但出现了意料之外的错误...
我尝试断言返回类型为任务类型,但不起作用。
public async Task CreateMessageHistoryAsync(Message message)
{
//This is the method that I am testing
if (!response.IsSuccessStatusCode)
{
throw new HttpRequestException(await response.Content.ReadAsStringAsync());
}
//This will throw if it does not save, can I test this?
}
[Fact]
public async Task Should_NotThrowHttpRequestException_When_AMessageHistoryIsCreated()
{
var recipients = MockMessage.GetRecipients("Acc", "Site 1", "Site 2", "Site 3");
var message = MockMessage.GetMessage(recipients);
mockStateFixture
.MockMessageHistoryService
.Setup(service => service.CreateMessageHistoryAsync(message));
var messageHistoryService = new MessageHistoryService(
mockStateFixture.MockIHttpClientFactory.Object);
await Assert.IsType<Task>(messageHistoryService.CreateMessageHistoryAsync(message));
}
我期望某个任务会返回结果,但实际上得到了以下结果:
结果信息:
Assert.IsType() Failure
Expected: System.Threading.Tasks.Task
Actual: System.Threading.Tasks.Task`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
Assert.Equal("System.Threading.Tasks.VoidTaskResult", messageHistoryService.CreateMessageHistoryAsync(message).GetType().GetProperty("Result")?.GetMethod.Invoke(t, new object[] { })?.GetType().FullName);
- Johnny