0

我正在使用带有 Web Api 的 ASP.NET MVC 3 的单元测试来编写测试用例。

现在我有一个动作,它调用了我在服务层中定义的一些方法,我在其中使用了以下代码行。

var userId = ((Project)(User.Identity)).UserId;

项目类在哪里

using System;
using System.Security.Principal;
using System.Web.Security;



namespace Project.Web.Core.Models
{ 
[Serializable]
public class ProjectUser : IIdentity
{
    public ProjectUser(){} 
    public int UserId { get; set; }
  }
}

现在如何为此创建单元测试方法,我得到空引用异常。我是编写单元测试的新手,谁能帮帮我

4

1 回答 1

0

与此问题类似:Testing controller Action that uses User.Identity.Name

User.Identity 对象所在的 HttpContext 不存在于单元测试的上下文中,它只存在于 ASP.NET 进程中运行的代码的上下文中。

如果您将 HttpContext 作为参数传递给服务方法,可能会更容易编写单元测试。然后,您可以对引用的问题使用类似于此答案的代码:

var mock = new Mock<UnknownServiceClass>();
var mockedUser = new ProjectUser(){ UserId = 1 };
mock.SetupGet(p => p.HttpContext.User).Returns(mockedUser);
于 2012-11-22T19:13:28.527 回答