Как написать контрольный пример для метода абстрактного класса - PullRequest
0 голосов
/ 17 октября 2018

Вот мой код, я хочу написать модульный тест для метода Build как часть написания тестового примера для класса D.

public class X
{

}

public interface IB
{
    X GetX(X value);
}

public class B : IB
{
    public X GetX(X value)
    {
        //ToDo:
    }
}

public abstract class A
{
    private IB obj;
    public A(IB obj)
    {
        this.obj = obj;
    }
    public X Build()
    {
        return obj.GetX();
    }
}

public class D : A
{
    public void display()
    {
        //TODO
    }
}

//Test Method

[Test]

public void Test_Build(){
var mock = new Mock<IB>();

var objA = new D();
objA.Build();

}

вот мой метод тестирования.При вызове метода сборки мой код выдает исключение из-за того, что не передает экземпляр IB.Я не уверен, как передать фиктивный объект IB в абстрактный класс A через дочерний класс D.

1 Ответ

0 голосов
/ 17 октября 2018

Это потому, что конструкторы не наследуются в C #.

Ваш базовый класс A имеет конструктор, который принимает экземпляр IB и инициализирует поле.Однако ваш наследующий класс не имеет указанного конструктора и поэтому имеет конструктор по умолчанию без параметров.

Вам нужно предоставить конструктор для D, который принимает экземпляр IB, а затем передать его в базовый конструктор, например

public D(IB instanceOfIB)
    : base(instanceofIB)
{
    //do other things here if you want or leave empty
}
...