Я новичок в фреймворке moq в .net.
Из моего исследования в Интернете кажется, что есть 2 способа использовать эту платформу. Либо издевайтесь над интерфейсом, либо издевайтесь над конкретным классом. Похоже, при издевательстве над конкретным классом можно смоделировать только метод 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();
}
}
Теперь, если мне нужно выполнить модульное тестирование клиента, мне нужно передать поддельный объект Ifoo в ctor. В этом случае я должен сделать:
var mock = new Mock<Ifoo>();
или
var mock = new Mock<Foo>();
Имеет ли это значение в моем случае? Каковы плюсы и минусы насмешливого интерфейса против насмешливого класса? На мой взгляд, интерфейс с насмешками всегда является лучшим решением, поскольку насмешка над классом может дать только имитацию метода virtual
.