【问题标题】:Getting Context in a NUnit testing在 NUnit 测试中获取上下文
【发布时间】:2013-03-04 04:34:09
【问题描述】:

我有一个正在单元测试的 WCF 服务。我需要保存 OperationContext 以在我的测试中使用它。上下文未保存,因此无法在我的测试中使用它回发。我可以保存当前上下文以在测试中使用它的最佳方法是什么?

【问题讨论】:

  • 你能贴出你想测试的代码吗?

标签: c# wcf testing nunit moq


【解决方案1】:

你通常不能模拟 OperationContext(除非你包装它)。但是看看这个,如果它对你有帮助的话。

http://blog.gfader.com/2010/08/how-to-unit-test-wcf-service.html

一些替代方案是:

1) 另一种方法是简单地重构您的代码。将服务中的所有业务逻辑移到单独的可测试业务类中,让服务只参与集成测试。服务更像是基础设施,并不是所有东西都需要单元测试。集成/端到端/行为测试也是测试和有效的方法。

2) 使用更强大的测试框架。检查Moles framework,它能够拦截呼叫并重定向它们。这可以“模拟”密封类和静态方法/属性。使用 Moles,您可以将对 OperationContext 的调用重定向到您自己的方法。

【讨论】:

  • 你有没有一些例子说明 Moles 使用 Context 在双通道 WCF 服务或类似服务上回发?谢谢
  • 对不起,我没有,我只是看了一些文章并为您发布了答案,希望对您有所帮助。
  • 除非我包装它,否则您在回答中提到过?你是什​​么意思有一些例子吗?谢谢
  • 在自定义类中包装对 OperationContext 的访问,并将该类的实例注入您的服务。这将涉及额外的工作,因为您需要在服务之外的某个地方进行注入。例如构造函数注入将需要自定义 IInstanceProvider。
  • 选择备选方案 1 并将业务逻辑与 WCF 行为分开。您不想在测试中包含对 WCF 的依赖项,而是想模拟它们。
猜你喜欢
  • 1970-01-01
  • 2014-07-17
  • 2012-01-26
  • 2012-03-07
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多