如何在WCF ServiceAuthorizationManager中模拟IContextChannel?

Ste*_*eve 6 c# wcf unit-testing moq

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

private OperationContext _context;
private Mock<IContextChannel> _contextChannelMock;
Run Code Online (Sandbox Code Playgroud)

然后,我尝试创建OperationContext:

_context = new OperationContext(_contextChannelMock.Object);
Run Code Online (Sandbox Code Playgroud)

但是这一行抛出一个异常:

结果消息:初始化方法Urs.EnterpriseServices.Providers.Tests.UrsServiceAuthorizationManager_Tests.SetUp引发异常。System.InvalidOperationException:System.InvalidOperationException:无效的IContextChannel传递给OperationContext。必须是服务器调度通道或客户端代理通道。

我如何模拟服务器分配通道?

Sun*_*nov 4

你不能直接。看看WCFMock是否有帮助。

  • @Steve你是怎么做到的?我也有同样的问题。 (2认同)