C# 如何在WCF ServiceAuthorizationManager中模拟IContextChannel?

C# 如何在WCF ServiceAuthorizationManager中模拟IContextChannel?,c#,wcf,unit-testing,moq,C#,Wcf,Unit Testing,Moq,我正在尝试为自定义ServiceAuthorizationManager编写单元测试。对CheckAccessCore的调用将OperationContext作为参数。要实例化OperationContext,必须将IContextChannel传递给构造函数。使用MOQ,我声明了一个IContextChannel: private OperationContext _context; private Mock<IContextChannel> _contextChannelMock

我正在尝试为自定义ServiceAuthorizationManager编写单元测试。对CheckAccessCore的调用将OperationContext作为参数。要实例化OperationContext,必须将IContextChannel传递给构造函数。使用MOQ,我声明了一个IContextChannel:

private OperationContext _context;
private Mock<IContextChannel> _contextChannelMock;
但这一行引发了一个例外:

结果消息:初始化方法 Urs.EnterpriseServices.Providers.Tests.UrsServiceAuthorizationManager\u Tests.SetUp 抛出异常。System.InvalidOperationException: System.InvalidOperationException:传递给的IContextChannel无效 操作上下文。必须是服务器调度通道或 客户端代理通道


如何模拟服务器调度通道?

您不能直接模拟。查看是否有帮助。

您使用什么代码来设置您的
Mock
对象
属性?目前没有。我尝试设置每个属性,但仍然出现了错误。感谢链接,它没有我使用ServiceAuthorizationManager时所需的模拟,从我对它的了解来看。这很不幸,因为我希望有可测试的授权逻辑。我想我可以编写一个使用OperationContext包装器的新方法,然后所有内容都是可测试的。@Steve你是怎么做到的?我也有同样的问题。
_context = new OperationContext(_contextChannelMock.Object);