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中存根 - 当我尝试这种情况时,真实世界的扩展名被称为&整个事情爆炸了)
你是如何对扩展方法进行存根的?在你的例子中,扩展方法只是针对允许的接口的假实现执行。您可能需要为扩展方法的工作提供更多源代码 – Nkosi