我有一个 OLE COM 对象,试图为其编写包装器,我决定开始使用 TDD 为其编写代码,因为我相信这会让我对要编写的内容有更好的方向感。 COM 对象有一个如下所示的接口:
Interface Mapinfo
Sub [Do](ByVal cmd As String)
Function Eval(ByVal cmd As String) As String
End Interface
[Do] 命令将采用如下所示的内容
Mapinfo.Do("OpenTable("""C:\Temp\MyTable.TAB""")")
现在我正在尝试编写一个包装器,所以有一个像这样的函数:
Mapinfo.OpenTable("C:\Temp\MyTable.TAB")
现在我遇到的主要问题是,每次我想编写新的测试和一些代码时,我都必须创建 OLE 对象的实例,等待应用程序启动(30 秒以上),测试我的小功能,关闭并处置 OLE 对象,更改代码并再次运行。
我的问题是:是否有更好的方法来完成所有这些操作,而不必每次都启动 OLE 应用程序?我听说过模拟对象,但没有真正研究过它,他们会在这里帮助我吗?如果是这样怎么办?
编辑:我现在意识到我必须为 Mapinfo 制作一个模拟对象,我的问题是如何制作一个可以采用不同格式字符串的模拟对象?这将如何帮助我验证包装器中的代码是否正确?
是的,模拟对象会有所帮助。本质上,您通过模拟 Mapinfo 接口来创建一个假的 Mapinfo 对象(顺便说一句,您应该重命名该 IMapInfo)。
然后,您指示该模拟需要调用什么以及返回什么结果(如果适用)。您还可以创建测试,其中模拟会引发异常或执行其他难以使用真实对象调用的操作。
两个大型(且免费).NET 模拟框架是MoQ http://code.google.com/p/moq/ and 犀牛模拟 http://ayende.com/projects/rhino-mocks.aspx。 Rhino 更加成熟,有更多配置模拟的方式。 MoQ 是新来者,与 Rhino 相比,其功能集较小,设定期望的方式也较少。
就我个人而言,我认为 MoQ 更适合新手嘲笑。它相对容易理解,所有文档都与当前版本相关(搜索 Rhino 教程,你会得到几年前的垃圾,不再适用),而且它表现良好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)