模拟 WebOperationContext
我正在使用 WCFMock 来模拟 Web 服务中的 WebOperationContext。唯一的用法是将自定义 HTTP 标头添加到 WebOperationContext.Current.OutgoingResponse.Headers 集合中。我无法使用起订量验证这一点。我已经尝试过:
- 验证是否调用了 Add 方法。这会失败,因为 Add 不是虚拟的
- 尝试直接从 MockedWebOperationContext.Current 访问标头。数量始终为零
如何在我的单元测试用例中验证是否已添加自定义标头?
I'm using the WCFMock to mock the WebOperationContext in my web service. The only usage is to add a custom HTTP header to the WebOperationContext.Current.OutgoingResponse.Headers collection. I'm unable to verify this using Moq. What I've already tried:
- Verify if the Add method is getting invoked. This fails because Add is not virtual
- Try to access the header directly from MockedWebOperationContext.Current. This is always zero in number
How can I verify in my unit test case that a custom header has been added?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
想通了。这是后代的解决方案。
当我们为 IWebOperationContext 创建“最小起订量模拟”时,该示例建议我们设置属性
DefaultValue = DefaultValue.Mock
。这将模拟所有依赖项,包括 HttpHeaders 集合。我跳过了这一点并模拟了OutgoingWebResponseContext
以返回WebHeaderCollection
。对于我的测试用例,我只是对这个集合进行断言。Figured it out. Here's the solution for posterity.
When we create the "moq mock" for the IWebOperationContext, the example suggests that we set the property
DefaultValue = DefaultValue.Mock
. This will mock all dependincies including the HttpHeaders collection. I skipped this and mocked theOutgoingWebResponseContext
to return aWebHeaderCollection
. For my test case I simply assert on this collection.