微软伪造 - 对扩展方法进行存根不应该有效但是确实如此

时间:2016-10-28 09:25:25

标签: moq microsoft-fakes stubs

我有一个界面ILoader,我在其上定义了一个扩展方法CheckLoaderDatabaseConnection

  //the extension method
  public static class LoaderExtensions
  {
    public static void CheckLoaderDatabaseConnection(this ILoader loader)
    {
      //data access stuff

  }

那里所有的doumentation告诉我,当我想要存根扩展方法时我必须使用填充程序,因为该方法是静态的并且它不能被存根。

是的,它在Moq中不起作用,因为我已经尝试过了。

但我可以在Fakes中存根接口:

var loader = new MyNamespace.Fakes.StubILoader() {  };

在我的单元测试中,我将存根传递给我正在测试的具体实例的构造函数,当它到达这一行时:

loader.CheckLoaderDatabaseConnection();

它调用stubbed方法(什么都不做)并且工作正常。

这是为什么?我肯定错过了什么。我根本不需要在这里使用垫片(虽然我不能在Moq中存根 - 当我尝试时,真实的世界扩展被称为&整个事情爆炸)

1 个答案:

答案 0 :(得分:0)

不,扩展方法没有被调用,但是从更早的蓝屏死机重启后,扩展方法现在被调用,单元测试失败,正如我所料。

不知道这几天是如何工作的;一些奇怪的东西我不认为这个问题可以回答。