Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在NUnit测试中获取上下文_C#_Wcf_Testing_Nunit_Moq - Fatal编程技术网

C# 在NUnit测试中获取上下文

C# 在NUnit测试中获取上下文,c#,wcf,testing,nunit,moq,C#,Wcf,Testing,Nunit,Moq,我有一个WCF服务,我正在进行单元测试。我需要保存OperationContext以在测试中使用它。未保存上下文,因此无法使用它在我的测试中发回。保存当前上下文以便在测试中使用它的最佳方法是什么 通常不能模拟OperationContext(除非包装它)。但是,看看这个,如果它对你有帮助的话 有些备选方案是: 1) 另一种方法是简单地重构代码。将所有业务逻辑从您的服务转移到单独的可测试业务类中,并让服务只参与集成测试。服务更像是基础设施,并非所有东西都真正需要单元测试。集成/端到端/行为测试也

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

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

有些备选方案是:

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


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

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

有些备选方案是:

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


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

您可以发布您想要测试的代码吗?您可以发布您想要测试的代码吗?您是否有Moles使用Context发回双通道WCF服务或类似服务的示例?谢谢教授,我没有,我只是读了一些文章并为你们发布了答案,我希望它能帮助你们。你们在答案中提到了,除非我把它包装起来?你是什么意思?有什么例子吗?thanksWrap在自定义类中访问OperationContext,并将该类的实例注入到您的服务中。这将涉及额外的工作,因为您需要在服务范围之外的某个地方进行注射。例如,构造函数注入将需要自定义IInstanceProvider。选择备选方案1并将业务逻辑与WCF行为分离。你不想在测试中包含对WCF的依赖,你想模拟它们。你有没有一些Moles使用上下文发回双通道WCF服务或类似服务的例子?谢谢教授,我没有,我只是读了一些文章并为你们发布了答案,我希望它能帮助你们。你们在答案中提到了,除非我把它包装起来?你是什么意思?有什么例子吗?thanksWrap在自定义类中访问OperationContext,并将该类的实例注入到您的服务中。这将涉及额外的工作,因为您需要在服务范围之外的某个地方进行注射。例如,构造函数注入将需要自定义IInstanceProvider。选择备选方案1并将业务逻辑与WCF行为分离。您不希望在测试中包含对WCF的依赖项,而是希望模拟它们。