获得 System.Reflection.TargetInvocationException 呼叫 Mock.Object
Getting System.Reflection.TargetInvocationException for a call to Mock.Object
我不确定为什么会这样,但是当我尝试调用 userIdProvider.GetUserId(_mockHubConnectionContext.Object)
时,它会在 _mockHubConnectionContext.Object
处抛出 System.Reflection.TargetInvocationException
。
我的测试构造函数 class 包括:
_mockConnectionContext = new Mock<ConnectionContext>();
_mockLoggerFactory = new Mock<ILoggerFactory>();
_mockHubConnectionContext = new Mock<HubConnectionContext>(_mockConnectionContext.Object, new HubConnectionContextOptions(), _mockLoggerFactory.Object);
UserIdProvider.GetUserId() 的方法签名是:
public string GetUserId(HubConnectionContext hubConnectionContext)
为了给您更多背景信息,当我们尝试从 .NET Core 3.1 迁移到 .NET 6.0 时,这种情况就开始了。
TargetInvocationException
是对其他东西抛出的异常的包装,因此您要做的第一件事就是查看 InnerException
以检查消息 \ 堆栈跟踪。
这有望为您指明问题所在的正确方向。
我很久以前就解决了这个问题。看到问题没有具体答案,我决定 post 自己回答。
将传递给 Mock<HubConnectionContext>
的连接上下文从模拟更改为某些具体实现,如 DefaultConnectionContext
解决了这个问题。有关导致错误的原因的更多详细信息,请参见 here。
我不确定为什么会这样,但是当我尝试调用 userIdProvider.GetUserId(_mockHubConnectionContext.Object)
时,它会在 _mockHubConnectionContext.Object
处抛出 System.Reflection.TargetInvocationException
。
我的测试构造函数 class 包括:
_mockConnectionContext = new Mock<ConnectionContext>();
_mockLoggerFactory = new Mock<ILoggerFactory>();
_mockHubConnectionContext = new Mock<HubConnectionContext>(_mockConnectionContext.Object, new HubConnectionContextOptions(), _mockLoggerFactory.Object);
UserIdProvider.GetUserId() 的方法签名是:
public string GetUserId(HubConnectionContext hubConnectionContext)
为了给您更多背景信息,当我们尝试从 .NET Core 3.1 迁移到 .NET 6.0 时,这种情况就开始了。
TargetInvocationException
是对其他东西抛出的异常的包装,因此您要做的第一件事就是查看 InnerException
以检查消息 \ 堆栈跟踪。
这有望为您指明问题所在的正确方向。
我很久以前就解决了这个问题。看到问题没有具体答案,我决定 post 自己回答。
将传递给 Mock<HubConnectionContext>
的连接上下文从模拟更改为某些具体实现,如 DefaultConnectionContext
解决了这个问题。有关导致错误的原因的更多详细信息,请参见 here。