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
C# 在不启动WCF服务的情况下测试它们_C#_Wcf_Unit Testing - Fatal编程技术网

C# 在不启动WCF服务的情况下测试它们

C# 在不启动WCF服务的情况下测试它们,c#,wcf,unit-testing,C#,Wcf,Unit Testing,我想测试我的WCF类(集成测试),但我不想将它们作为WCF服务启动 一切正常,但在某些情况下,我需要从OperationContext读取IncomingMessageHeader。我想知道这是否可以做到 到目前为止,我学到的是我可以创建OperationContext并使用它。但我需要通过需要绑定(然后是端点)的ChannelFactory创建它。我需要的(可能)是以某种方式将本地绑定到我的实现类。这可能吗?处理此问题的最佳方法是使用将OperationContext抽象到接口,然后使用lik

我想测试我的WCF类(集成测试),但我不想将它们作为WCF服务启动

一切正常,但在某些情况下,我需要从OperationContext读取IncomingMessageHeader。我想知道这是否可以做到


到目前为止,我学到的是我可以创建OperationContext并使用它。但我需要通过需要绑定(然后是端点)的ChannelFactory创建它。我需要的(可能)是以某种方式将本地绑定到我的实现类。这可能吗?

处理此问题的最佳方法是使用将OperationContext抽象到接口,然后使用like or实现该接口。测试时,模拟框架将提供该新类的实例来代替OperationContext。这将完全消除您在测试期间对外部事物的依赖。

处理此问题的最佳方法是使用将OperationContext抽象到接口,然后使用like or实现该接口。测试时,模拟框架将提供该新类的实例来代替OperationContext。这完全消除了您在测试过程中对外部事物的依赖。

另一种方法是将每个WCF方法都设置为一行程序,调用业务逻辑层,这样您就可以进行单元测试,而不必担心WCF实现的细节。

另一种方法是将每个WCF方法设置为一行程序,调用业务逻辑层,您将能够对其进行单元测试,而不必担心WCF实现细节。

我刚刚遇到了同样的问题,有人建议我按照Rick Liddle所说的去做。这似乎是最好的办法。我只是面临着同样的问题,我被建议按照里克·利德尔说的去做。这似乎是最好的方法。我喜欢你的想法,即不让业务逻辑进入服务,除非绝对必要。然后,WCF仅用作公开业务逻辑的一种方式。这将使单元测试更容易,并使您能够灵活地在其他非WCF应用程序中轻松使用业务逻辑。但如果我需要提供一些用户令牌来标识上下文呢?这样,我的方法将永远不会是一行。当然,这只是基础设施,而不是实际的逻辑。当然,有时候你需要从请求发送到实际业务逻辑的一些东西。在这些情况下,您的WCF方法可能不止是一个线性,并且可能需要测试。有些框架使这变得容易,有些则不然。但我认为,在大多数情况下,测试业务逻辑比测试从请求中获取内容的代码更重要。但我完全同意你的看法。有时候你需要同时测试这两个。在这种情况下,我的建议不起作用:)我喜欢你的想法,除非绝对必要,否则不要使用业务逻辑。然后,WCF仅用作公开业务逻辑的一种方式。这将使单元测试更容易,并使您能够灵活地在其他非WCF应用程序中轻松使用业务逻辑。但如果我需要提供一些用户令牌来标识上下文呢?这样,我的方法将永远不会是一行。当然,这只是基础设施,而不是实际的逻辑。当然,有时候你需要从请求发送到实际业务逻辑的一些东西。在这些情况下,您的WCF方法可能不止是一个线性,并且可能需要测试。有些框架使这变得容易,有些则不然。但我认为,在大多数情况下,测试业务逻辑比测试从请求中获取内容的代码更重要。但我完全同意你的看法。有时候你需要同时测试这两个。在这种情况下,我的建议行不通:)瑞克,我只是按照你的建议做了。事实证明,这比我最初的方法要容易得多,特别是因为我已经使用IoC提供服务。谢谢。@kostassoid-很高兴听到这个消息。我一开始也是这样。。。这似乎是一个疯狂的工作量,初始设置有点费时,但这是非常值得的。瑞克,我只是按照你的建议做了。事实证明,这比我最初的方法要容易得多,特别是因为我已经使用IoC提供服务。谢谢。@kostassoid-很高兴听到这个消息。我一开始也是这样。。。这似乎是一个疯狂的工作量,初始设置有点费时,但它是非常值得的。