Это то, что вас интересует, вывод . Проверьте вывод.
var expected = "Hof! Hof! Hof!";
var actual = dog.MakeNoise();
Assert.AreEqual(actual, expected);
Если метод находится внутри тестируемого класса, это деталь реализации. Возможно, вы захотите проверить взаимодействия , если в вашем классе есть соавтор, и вы хотите, чтобы ваши тесты Animal
были изолированы от соавтора (возможно, Bar
). Тогда вы можете выбрать использование подделки Bar
, чтобы убедиться, что Animal
действует надлежащим образом (и, конечно, у вас будут соответствующие тесты для real Bar
). Если это ближе к вашему реальному вопросу, пожалуйста, обновите его.
С учетом сказанного ваша иерархия классов (если это действительно указание) может использовать некоторую работу. Animal
не должен иметь метод, который относится только к собаке. Вы не должны проверять тип (класс, перечисление, что угодно) в классе. Создайте Dog
, унаследованный от Animal
, соответствующим образом переопределите метод MakeNoise
.
class Animal
{
public virtual string MakeNoise() { return whatever; }
}
class Dog : Animal
{
public override string MakeNoise() { return "Hof! Hof! Hof!"; }
}
//
Animal dog = new Dog();
var noise = dog.MakeNoise();
Вы даже можете зайти так далеко, чтобы сделать Animal
абстрактным.