service-reference - 服务引用上的 C# 中的 FakeItEasy
问题描述
我有一个服务参考,其中包含我需要在测试中使用的方法。
服务引用类定义为:
public class MyServiceReference : Clientbase<IMyServiceReference>, IMyServiceReference
{
public MyServiceReference()
{
}
..... methods is then defined
}
从我的测试方法中,我都尝试了
private MyServiceReference myServiceReferenceFake = A.Fake<MyServiceReference>();
// And
private MyServiceReference myServiceReference = new MyServiceReference();
对于这两种情况,构造函数中的崩溃都带有以下消息:
System.InvalidOperationException: Could not find default endpoint element that references contract.
我所需要的只是从该类中的方法中获得调用定义。如何解决?
解决方案
我没有经验Clientbase
,我认为这是一个System.ServiceModel.ClientBase<TChannel>
,但我可以做一些一般性的评论。
由于您首先尝试伪造 a MyServiceReference
,因此我假设您没有测试该类,并且您希望将其用作被测系统的协作者。在这种情况下,您最好的选择是尝试伪造IMyServiceReference
. 接口很容易伪造,因为它们不会像伪造类那样带来任何行为或包袱。
如果你觉得你真的需要伪造 a MyServiceReference
,那么我们必须应对FakeItEasy
最终会调用的事实,MyServiceReference()
它将调用 ClientBase<IMyServiceReference>()
,其文档说
ClientBase<TChannel>
使用应用程序配置文件中的默认目标端点初始化类的新实例。
根据您报告的错误,我假设未找到应用程序配置文件或不包含创建MyServiceReference
. 当您尝试MyServiceReference
直接实例化 a 时,您会遇到相同的错误,这一事实加强了我的信念。
所以我认为你前进的道路要么是尝试伪装,IMyServiceReference
要么是提供所需的配置ClientBase<IMyServiceReference>
。
推荐阅读
- html - 响应式网站在 Firefox 响应模式下运行良好,不适用于 Chrome Mobile 或 Instagram 和 Facebook 等槽式浏览器
- android - 在 SQLite 中保存和显示图像
- python - 从浏览器运行 python 程序
- c++ - 包含 iostream 会导致不同的二进制文件
- javascript - 对象操作 javascript
- r - R Caret 随机森林 AUC 好得令人难以置信?
- java - 如何通过 java 中的 runtime.exec() 传递用户和密码
- ruby-on-rails - Rails 应用程序中的多个连续 AJAX 调用
- android - Android anko警报不显示项目
- spring-boot - 如何在 Spring Boot tar 文件中包含 pkcs12 二进制文件