Mock静态方法

Moq是没有办法对静态方法进行Mock。

抽取到接口或者方法参数当中

所以我们如果要调用一些静态方法的时候。为了方便测试,我们需要把它封装到我们的接口当中,或者通过参数传递

如下,


//定义一个接口。所有的需要获取当前时间的,通过这个来获取
public interface IMyDateTime
{
    DateTime GetNow();
}

public class SettingService
{
    public string AA(string name, DateTime now)
    {
        // 在本来需要 DateTime.Now 的地方通过参数传递进来。
        return name + now;
    }
}

使用 其它的框架

https://github.com/tonerdo/pose 通过修改IL代码来支持静态方法 最后的release是2018 1月。 不支持.net 5了

上一篇:Mock 实现类
下一篇:参数捕获器
最近更新的
...