我只是想知道这是否会涉及多层间接?
替代文字 http://img244.imageshack.us/img244/7371/classdiagram1.jpg
我试着做一点解释。这个想法是我在一个只公开 Do 和 Eval 方法的 COM 对象之上构建一个 API。
以前我刚刚将一个 IComObject 传递给 Table 类并直接针对它工作,但这意味着当我尝试测试 Table 类时,我已经模拟了 IComObject 并担心命令会发送到我的表类中的 COM 对象。
基本思想是我有命令运行器,负责在 COM 对象中调用正确的命令,而表(和其他)对象只与命令运行器对话,而不必担心正在执行的命令。然后在我的测试中我可以这样做:
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");
是否有太多的间接层,或者这样可以吗?
注意:我将有更多的类,而不仅仅是表,诸如地图、窗口、对象等之类的东西都会与命令运行程序对话。