Jul*_*lia 2 .net vb.net asp.net-mvc unit-testing
我正在对我的控制器方法进行单元测试以获取来自 ClaimsPrincipal 对象的信息,但Current.FindFirst()没有返回任何内容,任何人都可以帮忙吗?谢谢。(也可以用 VB 和 C# 编写):
Public Class TestController
Public Function GetEmail() As String
Return ClaimsPrincipal.Current.FindFirst(ClaimTypes.Name).Value
End Function
End Class
<TestMethod()>
Public Sub Test()
//Arrange
Dim fackClaimPrinciple = New Mock(Of ClaimsPrincipal)()
Dim claims = New List(Of Claim)() From {New Claim(ClaimTypes.Name, "user@hotmail.com")}
fackClaimPrinciple.Setup(Function(e) e.Claims).Returns(claims)
Thread.CurrentPrincipal = fackClaimPrinciple.[Object]
// Act
Dim result = TestController.GetEmail()
'... ClaimsPrincipal.Current.FindFirst(ClaimTypes.Name).Value Returns nothing??
End Sub
Run Code Online (Sandbox Code Playgroud)
您可以将索赔原则分配给当前线程原则,
// Make fack claims principle instance
var fackClaimPrinciple = new Mock<ClaimsPrincipal>();
// Setup fack data
IEnumerable<Claim> claims = new List<Claim>() {
new Claim(ClaimTypes.Name, "user@hotmail.com")
}.AsEnumerable();
fackClaimPrinciple.Setup(e => e.Claims).Returns(claims);
// Assign to current thread principle
Thread.CurrentPrincipal = fackClaimPrinciple.Object;
// Act
ViewResult result = homeController.Index() as ViewResult;
// Assert
Assert.IsNotNull(result);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2576 次 |
| 最近记录: |