Mock My.User.IsInRole () ошибка в Asp.Net MVC - PullRequest
0 голосов
/ 01 мая 2018

У меня есть модульный тест для макета My.User.IsInRole(), используемый в следующем контроллере,

Public Class BookingController
    Public Function GetUserRole() As String
        If My.User.IsInRole("Agent") Then
             result = "Login as Agent"
        End If

        ```
    End Function
 End Class

пытается установить макет в этом тестовом примере (код VB):

<TestMethod()>
Public Sub Test()
    //Arrange
    'Dim httpContext = New Mock(Of System.Web.HttpContextBase)()
    Dim principal = New Moq.Mock(Of IPrincipal)()

    'httpContext.Setup(Function(x) x.User).Returns(principal.[Object])
    principal.Setup(Function(p) p.IsInRole("Agent")).Returns(True)
    Thread.CurrentPrincipal = principal.[Object]

    // Act
    Dim result = controller.GetUserRole()

End Sub

При вызове GetUserRole(), My.User.IsInRole("Agent") должен возвращать True, но возвращает False. Что-то не так с моим кодом?

Любые предложения по поводу этой ошибки.

1 Ответ

0 голосов
/ 02 мая 2018

Вам необходимо присвоить макет принципа текущему принципу потока (ниже приведен код c #, я надеюсь, что вы можете его интерпретировать)

    // Make fack principle instance
    var fackPrinciple = new Mock<IPrinciple>();

    // Setup fack data
    fackPrinciple.Setup(e => e.IsInRole(It.IsAny<String>)).Returns(true);

    // Assign to current thread principle
    Thread.CurrentPrincipal = fackPrinciple.Object;   

Пожалуйста, дайте мне знать, если есть какие-либо проблемы?

...