У меня есть небольшой класс, который имеет небольшой метод, который вызывается при возникновении события.Ошибка FakeItEasy: никаких вызовов не было сделано для поддельного объекта
public class DemoUI
{
public DemoUI(TestRunner runner)
{
runner.UserMessage += OnEventRunThis;
}
protected void OnEventRunThis(object sender, UserMessageEventArgs e)
{
Console.WriteLine(e.Message);
}
}
Теперь в моем тесте я создаю объект типа TestRunner
и выполнить Execute
метод на нем. Это вызывает событие, которое затем перехватывается, и OnEventRunThis
добросовестно запускает печать сообщения. Но Fake легко сообщает об ошибке «Нет вызовов для поддельного объекта».
var _sutTestRunner = new TestRunner();
var fakeDemoUI = A.Fake<DemoUI>(x => x.WithArgumentsForConstructor(() => new DemoUI(_sutTestRunner)));
_sutTestRunner.Execute();
A.CallTo(fakeDemoUI).Where(x => x.Method.Name == "OnEventRunThis").MustHaveHappened();
Метод OnEventRunThis
становится называется, потому что я вижу выход получение печати в окне вывода. Таким образом, это в моем ограниченном понимании означает, что вызов был сделан для объекта Fake.
Или я что-то упускаю? Или есть ли другой способ сделать это?
сделать тест рефакторинга дружественный: A.CallTo (() => fakeDemoUI.OnEventRunThis (A
Я собирался предложить это, @Urs, но для этого требуется публикация 'OnEventRunThis'. –
Создание метода виртуального исправления проблемы. Выполнение действительно происходит до A.CallTo. Я устал, набрав вопрос. – NotAgain