В 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 - у него проблемы с разбором скобок. Кто-нибудь может подтвердить, что это проблема?