【发布时间】:2018-08-17 21:32:05
【问题描述】:
在 Moq 中,我可以像这样设置会话变量(vb.NET 代码):
Dim httpContext As Mock(Of HttpContextBase) = New Mock(Of HttpContextBase)()
Dim httpRequest As Mock(Of HttpRequestBase) = New Mock(Of HttpRequestBase)()
Dim httpResponse As Mock(Of HttpResponseBase) = New Mock(Of HttpResponseBase)()
Dim httpSession As Mock(Of HttpSessionStateBase) = New Mock(Of HttpSessionStateBase)()
**httpSession.Setup(Function(s) s("RoleId")).Returns(1008)**
...
我如何使用 NSubstitute 来做到这一点?
我已经尝试了这些但没有工作:
HttpSession.Item("RoleId").Returns(1008) 'but got the error NullReferenceExpection.
httpContext.Session("RoleId").Returns(1008) 'but got the same error
更新: 尝试了 Nkosi 的 C# 示例,它起作用了。但是,当像这样将其转换为 vb.NET 时:
<Fact>
Public Sub Session_Should_Have_Item()
Dim httpContext = Substitute.[For](Of HttpContextBase)()
Dim expected = 1008
httpContext.Session("RoleId").Returns(expected)
Dim actual = httpContext.Session("RoleId")
actual.Should().Be(expected)
End Sub
正如我之前提到的那样,运行时错误被抛出:
enter code here`httpContext.Session("RoleId").Returns(expected)
在我看来,NSubstitute 对 vb.net 的支持不是很好——解析括号有困难。谁能确认这是问题所在?
【问题讨论】:
-
错误消息是:Microsoft.VisualBasic.dll 中出现“System.NullReferenceException”类型的异常,但未在用户代码中处理附加信息:未设置对象变量或块变量。跨度>
标签: vb.net unit-testing session moq nsubstitute