当前位置: 首页 > 编程语言 > C#

如何使用非虚函数对单元进行unit testing模拟分享

时间:2023-04-10 19:22:51 C#

C#学习教程:如何使用非虚函数模拟单元测试部分类SoapApi:System.Web.Services.Protocols.SoapHttpClientProtocol{publicSOAPTypeEnumAskServerQuestion(){object[]results=returnthis.Invoke("AskServerQuestion");返回(SOAPTypeEnum)结果[0];我有一些薄的Wrap代码来跟踪结果等。是否可以使用任何对象模拟框架来制作一个假的SoapApi类并为每次调用薄包装函数返回可预测的结果?我无法将AskServerQuestion()函数设为虚拟函数,因为它是由wsdl.exe工具自动生成的。我这样做的方法是注入一个ISoapApi,其中ISoapApi接口模仿自动生成的SOAPAPI。对于您的情况:publicinterfaceISoapApi{SOAPTypeEnumAskServerQuestion();然后,利用生成的SoapApi类是部分的这一事实,并将其添加到另一个文件中:publicpartialclassSoapApi:ISoapApi{}然后,消费后者应该采用可以被任何模拟框架模拟的ISoapApi依赖项。当然,一个缺点是当SOAPapi改变时,你也需要更新接口定义。该类是部分的,因此您可以让该类在您编写的类的一部分中实现接口。然后就可以模拟界面了。我发现了一种适用于类不是本地类的情况的技术。假设这是原始类://生成的类,无法修改。publicclassSomeClass{//非虚函数,不能模拟。publicvoidSomeFunc(){//...}}首先,从类中提取接口:publicinterfaceISomeClass{voidSomeFunc();}现在新建一个类继承上面两个类:publicSomeClass2:SomeClass,ISomeClass{//这个类的主体是空的。现在您可以在.它的行为与SomeClass相同。你可以模拟ISomeClass。以上就是《C#学习教程:如何使用非虚函数模拟单元测试》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表侵权,请点击右边联系管理员删除。如需转载请注明出处: