Для модульного тестирования я использую 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?
Спасибо заранее,
Мэнни