Я не могу настроить обратный вызов защищенного метода с использованием Moq (v.4.2).Как настроить обратный вызов защищенного метода с помощью Moq?
Код выглядит следующим образом:
public abstract class AbstractClass
{
protected abstract void OneProtectedMethod();
}
public class OneClass : AbstractClass
{
protected override void OneProtectedMethod()
{
Console.WriteLine("Hello");
}
public void DoMethod()
{
OneProtectedMethod();
}
}
[Test]
public void should_call_protected_method()
{
var mock = new Mock<OneClass>();
mock.Protected().Setup("OneProtectedMethod").Callback(() => Console.WriteLine("Goodbye"));
var o = new OneClass();
o.DoMethod();
mock.Protected().Verify("OneProtectedMethod", Times.Once());
}
ли я делаю что-то неправильно здесь?
Спасибо.
Тест ничего не делает, нет никакой связи между макетом и экземпляром '' 'OneClass'' в' '' 'Act'''. Чего вы пытаетесь достичь? – dee
Я хочу проверить, был ли метод вызван на объект (и многое другое, попытайтесь измерить/вычислить что-то, поэтому Callback). Есть ли способ сделать это? – Marimout
Конечно, есть способ. См. Мой ответ на примере. Проблема в вашем тесте заключается в том, что у вас нет никакой связи между тестируемым классом и макетом. Оба они независимы. Поэтому, когда вы вызываете '' 'DoMethod'', он не может влиять на макет. Таким образом, вы правильно настроили защиту, но тогда макет не используется. HTH – dee