提问人:MChak 提问时间:1/20/2023 最后编辑:MChak 更新时间:1/23/2023 访问量:496
获取 System.NullReferenceException:模拟时对象引用未设置为对象的实例
Getting System.NullReferenceException : Object reference not set to an instance of an object while mocking
问:
我正在使用 xunit 和 moq 为服务结构应用程序中的服务编写单元测试。
我像这样通过嘲笑
private static DataQueueService CreateDataQueueService(
Mock<IServiceBusClientFactory> serviceBusClientFactoryMock )
{
// Exception is being thrown at this line below
serviceBusClientFactoryMock ??= new Mock<IServiceBusClientFactory>();
return new UsageDataQueueService(serviceBusClientFactoryMock.Object);
}
然后测试代码是(我已经删除了断言,因为它不相关):
[Fact]
public async Task QueueData()
{
// arrange
Mock<IServiceBusClientFactory> serviceBusClientFactoryMock = new Mock<IServiceBusClientFactory>();
serviceBusClientFactoryMock
.Setup(factory => factory.CreateServiceBusClient(It.IsAny<string>()))
.Returns(It.IsAny<IServiceBusClient>());
// act
DataQueueService dataQueueService = CreateDataQueueService(serviceBusClientFactoryMock: serviceBusClientFactoryMock);
}
我收到 Null 引用异常。请帮忙。这么多的背景信息是否足以回答这个问题,还是需要更多细节?
答:
0赞
MChak
1/23/2023
#1
正如 @Alexander Petrov 在评论中指出的那样,问题出在 Returns(It.IsAny()。它必须返回具体实例或 IServiceBusClient 模拟。
评论
Returns(It.IsAny<IServiceBusClient>()
IServiceBusClient