Как проверить, что базовый конструктор получает правильные аргументы?

Я создаю методологию написания юнит-тестов в моей компании. Мы сосредоточены на тестировании одной вещи каждый раз, но в случае проверки того, что базовый конструктор получает правильные параметры, я не нахожу ничего другого, кроме тестирования базового конструктора.

Есть ли лучший подход? Мы используем MSTest вместе с JustMock и Rhino, поэтому доступны расширенные функции, но в любом случае я не нашел пути. Найдите пример ниже:

public Car : Vehicle
{
    public Car() : base(4) {};
}

public Vehicle
{
    public Vehicle(int wheelNumber) {};
}

Я хотел бы поместить ожидание в базовый параметр конструктора, как я бы сделал с обычным методом.

Спасибо

2 ответа

Решение

Не ожидайте ничего о базовом конструкторе. Для вашего кода, я бы удостоверился, что Car является транспортным средством, а затем проверьте, правильно ли задано значение wheelNumber по умолчанию (и это только в том случае, если существует открытый метод для этого).

Если конструктор для Car повторил код в Vehicle с участием wheelNumber ваш тест должен пройти. И затем, когда кто-то реорганизует код, чтобы он был выполнен правильно, тест все равно должен пройти. Таким образом, вы знаете, что вы не изменили свою функциональность.

Я не уверен, что вы можете проверить базовый конструктор таким образом.

Если вы выставляете базовое свойство, возможно, вы проверяете это

Грубо говоря:

Assert.AreEqual(car.BaseProperty,4)

Или вы можете протестировать ожидаемое поведение открытого метода, который воздействует на данные / переменную, другой псевдокод:

 class Vehicle
 {
    protected int  X{}
    public Vehicle(int x)
    { 
      X= x;
      ++X;
     }
 }
 car = new Car(4);
 Assert.ReturnsFive(car.DoSomething(),5)
Другие вопросы по тегам