Мне было просто интересно, будет ли это связано со многими слоями косвенности?
Альтернативный текст http://img244.imageshack.us/img244/7371/classdiagram1.jpg
Я пытаюсь немного объяснить. Идея состоит в том, что я создаю API поверх COM-объекта, который предоставляет только методы Do и Eval.
Ранее я только что передал IComObject в класс Table и работаю непосредственно с ним, однако это означает, что когда я пытаюсь и тестирую класс Table, я высмеиваю IComObject и беспокоюсь о командах, отправляемых объекту COM в моем классе таблицы. .
Основная идея заключается в том, что у меня есть исполнители команд, которые отвечают за вызов правильных команд в COM-объекте, а объект Table (и другие) просто общается с исполнителями команд, не беспокоясь о выполняемых командах. Тогда в моих тестах я могу сделать это:
Mock<TableCommandRunner> mockrunner = new Mock<TableCommandRunner>();
mockrunner.Setup(run => run.getName("DummyTable")).Returns("FakeName");
Table table = new Table("DummyTable");
//Table.Name just calls commandrunner.getName
Assert.Equal(table.Name,"FakeName");
Слишком много слоев косвенности или все будет в порядке?
ПРИМЕЧАНИЕ: у меня будет намного больше классов, чем просто Table, такие вещи, как Map, Window, Object и т. Д., Которые будут общаться с участниками команды.