我在教程中没有找到与此特定问题相关的内容。
所以我有一个名为'Job'的类,其中具有公共构造函数和单个公共Run()函数。 类中的所有内容都是私有的并封装在类中。 (您可能还记得这里的旧帖子 Testing only the public method on a mid sized class?,其中的回复给了我很大的帮助)
这个Run()方法做了很多事情-以excel文件作为输入,从中提取数据,向第三方数据供应商发送请求,将结果放入数据库并记录作业的开始/结束。
这个Job类在其run方法中使用了3个不同的接口/类(IConnection将连接到第三方供应商并发送请求,IParser将解析结果,IDataAccess将保存结果到数据库)。 现在,我的Run()方法中唯一的真正逻辑是提取excel输入并将其发送到其他类的链中。 我创建了3个模拟类并在Job类ctor中使用DI,一切都很好...
除了-我仍然有点困惑如何测试我的Run()方法-因为它是void且不返回任何内容...
在这种情况下,我应该添加一个返回值到Run()方法,它返回从Excel文件中提取了多少条记录吗? 因为这是该函数中唯一完成的逻辑.. 这在真实代码中不会处理,但会在单元测试中处理.. 对我来说似乎有点可疑-但就真正的TDD而言,我还是个新手...
第二个问题-我应该创建一个名为IExcelExtractor的第四个类,它可以为我完成这个逻辑吗? 还是这有点爆炸性的类?
即使我采用后者,如果Run()函数返回void并且所有工作都由什么也不做的模拟对象执行,我该如何测试我的Run()函数? 如果我的函数具有有意义的返回值,我可以理解...但在这种情况下,我有点困惑。
非常感谢您阅读到这里。