程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用MOQ框架在c#中模拟静态方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用MOQ框架在c#中模拟静态方法??

开发过程中遇到如何使用MOQ框架在c#中模拟静态方法?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用MOQ框架在c#中模拟静态方法?的解决方法建议,希望对你解决如何使用MOQ框架在c#中模拟静态方法?有所启发或帮助; @H_747_2@mOQ(和其他DynamicProxy基础的嘲笑框架)无法嘲笑任何不是虚拟或抽象方法。

密封/静态类/方法只能与基于探查API工具伪造,像Typemock(商业)或Microsoft痣(免费,被称为假货在Visual studio 2012旗舰版/二千〇一十五分之二千〇一十三)。

另外,您可以重构设计以抽象化对静态方法的调用,然后通过依赖注入将这种抽象提供给您的类。然后,您不仅会有更好的设计,而且可以使用Moq等免费工具进行测试。

可以使用允许可测试性的通用模式,而无需完全使用任何工具。请虑以下方法:

public class MyClass
{
    public String[] GetMyData(String fileName)
    {
        String[] data = fileUtil.ReadDataFromfile(fileName);
        return data;
    }
}

除了尝试模拟之外fileUtil.ReadDataFromfile,您可以将其包装在一个protected virtual方法中,如下所示:

public class MyClass
{
    public String[] GetMyData(String fileName)
    {
        String[] data = GetDataFromfile(fileName);
        return data;
    }

    protected virtual String[] GetDataFromfile(String fileName)
    {
        return fileUtil.ReadDataFromfile(fileName);
    }
}

然后,在您的单元测试中,派生@H_679_11@myClass并调用它TestableMyClass。然后,您可以覆盖该GetDataFromfile方法以返回您自己的测试数据。

希望能有所帮助。

解决方法

我最近一直在进行单元测试,并且已经使用MOQ框架和MS Test成功地模拟了各种场景。我知道我们无法测试私有方法,但我想知道是否可以使用MOQ模拟静态方法。

大佬总结

以上是大佬教程为你收集整理的如何使用MOQ框架在c#中模拟静态方法?全部内容,希望文章能够帮你解决如何使用MOQ框架在c#中模拟静态方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。