C#单元测试,模拟VBScript

时间:2016-03-14 07:06:04

标签: c# unit-testing vbscript mocking

我已对需要测试的VBScript(.vbs)进行了更改。

这些是.cls文件中定义的一些VB6类。 VBScript需要这些类的对象。

我的更改仅限于VBScript中只需要一个对象的一个​​函数。

我想避免运行整个脚本并启动所有对象。

有什么办法,我可以编写单元测试来测试我的部分脚本并模拟我需要传递的对象吗?

1 个答案:

答案 0 :(得分:0)

这就是我使用C#单元测试来使用RhinoMocks模拟VB6 COM类的方法:

  1. 使用regsvr32在我的机器上注册了COM组件(ABC.dll)。这也要求我注册VB6类使用的所有类型和程序集。
  2. 然后我通过Add Reference>添加了对COM组件(ABC)的引用。 COM> ABC
  3. 我正在使用.Net 4.5.1 Framework,当我添加对COM组件的引用时,它为我创建了一个interop程序集(Interop.ABC.dll)
  4. 右键单击dll的属性,并确保将Embed Interop Types设置为True。这允许COM接口中的所有未知数据类型作为动态公开。这也允许您使用互操作库,而无需在您的计算机上注册类型。
  5. 我现在可以使用模拟框架使用通过互操作库公开的COM接口。我开始使用NSubstitute。但是,由于我将Interop Types嵌入为true,因此我的大多数公开接口属性都是动态类型(而不是object)。 NSubstitute不支持模拟动态get属性(虽然我能够模拟动态集属性)。因此,我正在使用RhinoMocks。
  6. 我正在使用Microsoft脚本控件库来加载脚本并运行其中的方法以进行单元测试
  7. 注意:我是COM的新手:)所以如果您是经验丰富的COM用户,请随时编辑我的更正答案或提供更多详细信息,链接等。