Delphi   发布时间:2022-04-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了delphi – 如何对与第三方COM对象进行交互并实例化的代码进行单元测试?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
目前阻碍我从单纯测试中获取热量的一个最大问题是我编写的代码中很大一部分在很大程度上依赖于来自不同来源的第三方COM对象,这些对象也倾向于相互交互(I’如果您需要知道,请使用多个帮助程序库为Microsoft Office编写加载项.

我知道@R_845_10675@用模拟对象但在这种情况下我究竟会怎么做呢?我可以看到,当我必须传递对已经存在的对象的引用时相对容易,但是我的一些例程本身实例化外部COM对象,然后有时将它们传递给来自不同库的其他外部COM对象.

这里最好的做法是什么?我是否应该让我的测试代码暂时更改注册表中的COM注册信息,以便测试的代码将实例化我的一个模拟对象?我应该注入修改后的类型库单位吗?有什么其他方法吗?

我会特别感谢Delphi的示例或工具,但同样对更一般的建议和更高级别的解释也同样满意.

谢谢,

奥利弗

解决方法

传统方法表示您的客户端代码应该使用包装器,它负责实例化COM对象.然后可以轻松地模拟这个包装器.

因为你有部分代码直接实例化COM对象,所以这并不适合.如果您可以更改该代码,则可以使用工厂模式:它们使用工厂来创建COM对象.您可以模拟工厂以返回替代对象.

是通过包装器还是通过原始COM接口访问对象取决于您.如果您选择模拟COM接口,请记住在模拟中检测IUnknown :: QueryInterface,因此您知道您已经模拟了所有接口,特别是如果该对象随后传递给其他COM对象.

或者,查看CoTreateAsClass方法.我从来没有使用它,但它可能会做你需要的.

大佬总结

以上是大佬教程为你收集整理的delphi – 如何对与第三方COM对象进行交互并实例化的代码进行单元测试?全部内容,希望文章能够帮你解决delphi – 如何对与第三方COM对象进行交互并实例化的代码进行单元测试?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。