Для модульного тестирования я использую NUnit 2.6 и Moq 4.0. Существует особый случай, связанный с виртуальными членами, когда прокси-объекты Moq не передают вызовы методов фактической реализации (, вероятно, по замыслу ). Например, если бы у меня был класс...
public class MyClass {
protected virtual void A() {
/*... */
}
protected virtual void B(...) {
/*... */
}
}
... и я использую Moq для переопределения метода GetSomethingElse
A()
в моем тестовом приспособлении...
var mock = new Mock<MyClass>();
mock.Protected().Setup("A").Callback(SomeSortOfCallback);
...использование метода mock A
работает великолепно; однако, если что-то в указанном методе вызовет не -имитированный метод B
, метод ничего не сделает и/или вернет значения по умолчанию, даже если в MyClass
существует реальная реализация.
Есть ли способ обойти это? Я неправильно использую Moq?
Заранее спасибо,
Мэнни