c#模拟接口vs模拟类

时间:2018-05-10 22:28:43

标签: c# .net unit-testing mocking moq

我是.net中的moq框架的新手。 从我的在线研究来看,似乎有两种方法可以利用这个框架。模拟界面或模拟具体类。似乎在模拟具体类时,只能模拟virtual方法。在我的例子中,我只想模拟一个实现接口的类的方法。

例如,如果我们有以下内容:

public interface Ifoo
{
    int Bar();
}

public class Foo : Ifoo
{
    public virtual int Bar()
    {
        return 0;
    }
}

public class Client
{
    public Client(Ifoo foo)
    {
        var temp = foo.Bar();
    }
}

现在,如果我需要单元测试Client,我需要在ctor中传递一个模拟的Ifoo对象。在这种情况下,我应该这样做:

var mock = new Mock<Ifoo>();

var mock = new Mock<Foo>();

这对我的情况有影响吗?模拟界面与模拟类的优缺点是什么?对我来说,模拟界面总是一个更好的解决方案,因为模拟一个类只能模拟virtual方法。

0 个答案:

没有答案