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了