使用NSubstitute和vb.net模块

时间:2013-02-01 11:19:14

标签: vb.net nsubstitute

我们有一些现有的静态方法,这些方法在VB模块中分组。

我想向公司介绍单元测试,我正在研究使用NUnit和NSubstitute。

我似乎无法为我想要测试的VB模块创建替代,或者找到如何执行此操作的任何示例。我正在尝试做类似的事情:

Dim Sub = Substitute.For(MyModule)()

但VB告诉我'MyModule是一种类型,不能用作表达式'。

如果我尝试

Dim Sub = Substitute.For(Of MyModule)()

VB告诉我'模块'MyModule'不能用作'。

类型

我的语法错了还是我想做一些愚蠢的事情?

2 个答案:

答案 0 :(得分:1)

使用模拟框架对模块和共享方法(C#中的静态类和方法)进行单元测试是不合适的,因为:

  • 模块(C#中的静态类)不能:
    • 继承自基类
    • 实现接口
    • 因而被嘲笑
  • 无法调用模拟实例中的共享方法(C#中的静态方法)

因此,要使用共享方法对模块或类进行单元测试,您需要直接执行此操作。示例:(省略了单元测试属性...)

Public Class A
    Public Shared Function Go(a As Integer) As Integer
        Return a + 10
    End Function
End Class

Public Class TestClass
    Public Sub Test()
        Assert.AreEqual(A.Go(5), 15)
    End Sub
End Class

答案 1 :(得分:0)

确保您在界面中发送,我不会将变量名称用作Sub,因为它是保留类型。

实施例   Dim fakeWebRequestService = Substitute.For(Of IWebRequestService)()