Определенно размещение логики внутри конструктора - это то, чего следует избегать. Хорошо, что вы знаете, что :-) В данном конкретном случае, возможно, if
мог бы войти в каждый из открытых методов MyClass
, или, возможно, вы могли бы использовать полиморфизм (создать MyClass
или MySpecialCharacterClass
базу на AnotherClass
объект)?
В любом случае, чтобы получить прямой ответ: если вам действительно нужно тестировать логику конструктора, делайте это так, как если бы вы тестировали любой другой метод (кстати, в некоторых языках это просто статический метод с именем new
).
[TestMethod]
public void is_constructed_with_numeric_candidate() {
// Given
AnotherClass obj = new AnotherClass { CandidateMode = CandidateMode.numeric };
// When
MyClass myClass = new MyClass(obj);
// Then
// assert myClass object state is correct for numeric candidate
...
}
[TestMethod]
public void is_constructed_with_special_candidate() {
// Given
AnotherClass obj = new AnotherClass { CandidateMode = CandidateMode.special };
// When
MyClass myClass = new MyClass(obj);
// Then
// assert myClass object state is correct for special candidate
...
}