2016-10-28 45 views
0

我有一个接口,ILoader,在我所定义的扩展方法CheckLoaderDatabaseConnection:在那里告诉我,我有微软正版正货 - 打桩扩展方法不应该工作,但它确实

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

    } 

所有doumentation当我想存根扩展方法时使用垫片,因为该方法是静态的,并且不能被桩住。

确实,它在Moq中不起作用,因为我试过了。

但我可以存根假货接口:

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

在我的单元测试,我通过在存根具体情况我测试的构造函数,并当它到达这条线:

loader.CheckLoaderDatabaseConnection(); 

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

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

+1

你是如何对扩展方法进行存根的?在你的例子中,扩展方法只是针对允许的接口的假实现执行。您可能需要为扩展方法的工作提供更多源代码 – Nkosi

回答

0

不,扩展方法wasn没有被调用,但是在从死亡蓝屏重启之后,扩展方法现在正在被调用,并且单元测试失败了,正如我所期望的那样。

不明白这是如何工作几天,但;奇怪的东西&我不认为这个问题是可以回答的。

相关问题