我正在努力寻找前进的道路。我有一个 VB6 屏幕,我需要调用一个 .Net '适配器'组件,它调用 WCF 服务。
WCF 服务在 Windows 身份验证下,因为我想检测调用该功能的用户的 Windows 登录。服务参考位于 .Net 适配器中。为了让它工作,我必须在绑定中添加细节,指定安全性,这在现实世界中一切正常。
我的问题是对此进行单元测试,并尝试模拟对 WCFServiceClient 的调用。因为我使用的是参数化构造函数,所以 Moq 不会模拟它。所以我相信我的模拟因此没有被使用,并且当我运行我的单元测试时,一个真正的调用正在通过 WCF 层(也就是说,我在我的解决方案中本地运行的 wcf 服务中设置了一个断点)。
为了简化我的代码,我在其中粘贴了一个 BasicHttpBinding,因为问题不在于安全性,而是如何重新编码函数以便我可以模拟调用,或者我可以做一些其他的事情来模拟调用吗?
在.Net适配器中,在我调用的函数中,我有以下代码
using (var myWcfService = new MyWcfServiceClient(new BasicHttpBinding (), GetEndpointAddress()))
{
//do stuff here
}
在我的单元测试中,我有以下模拟设置
var mockMyWcfService = new Mock<IMyWcfService>();
这并没有创建上述代码使用的模拟。如果我将参数类型放入构造函数中,那也不起作用,因为 Moq 只会模拟一个接口和一个默认的空构造函数(我相信,来自谷歌搜索我以前的错误)
此外,虽然在解决方案的其他项目中我们使用 Unity for IOC,但我不相信我可以在这个项目中做到这一点,因为 .Net 适配器是从 VB6 应用程序调用的,它没有 app.config 供我指定所有统一配置。
谢谢