gpt4 book ai didi

vb.net - 我将如何使用 COM OLE 对象进行 TDD

转载 作者:行者123 更新时间:2023-11-28 20:07:16 25 4
gpt4 key购买 nike

我有一个试图为其编写包装器的 OLE COM 对象,我决定开始使用 TDD 为其编写代码,因为我相信它会让我对我正在尝试的事情有更好的方向感来写。 COM 对象具有如下接口(interface):

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 接口(interface)创建了一个伪造的 Mapinfo 对象(顺便说一句,您应该重命名为 IMapInfo)。

然后您指示该模拟调用期望什么,以及返回什么结果(如果合适)。您还可以在模拟抛出异常或执行其他难以使用真实对象调用的事情的地方创建测试。

两个大的(免费的).NET 模拟框架是 MoQRhino Mocks . Rhino 更成熟并且有更多配置模拟的方法。 MoQ 是新来者,与 Rhino 相比,它具有更小的功能集和更少的设置期望的方法。

个人觉得MoQ更适合新手mocking。它相对容易理解,所有文档都与当前版本相关(搜索 Rhino 教程,你会得到几年前不再适用的垃圾),并且它表现良好。

关于vb.net - 我将如何使用 COM OLE 对象进行 TDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/258627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com