【发布时间】:2012-11-22 06:19:03
【问题描述】:
我正在使用带有 Web Api 的 ASP.NET MVC 3 的单元测试来编写测试用例。
现在我有一个动作,它调用了我在服务层中定义的一些方法,我在其中使用了以下代码行。
var userId = ((Project)(User.Identity)).UserId;
Project 类在哪里
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; }
}
}
现在如何为此创建单元测试方法,我得到空引用异常。我是编写单元测试的新手 谁能帮帮我
【问题讨论】:
-
理想情况下,您应该在编写单元测试时模拟外部服务调用或程序外部的任何内容。简而言之,为了单元测试,将外部服务替换为您自己的测试服务甚至是硬编码的值。
搜索可以为您提供有关如何创建模拟的更多详细信息,具体取决于您使用的单元测试框架或工具。 -
所以你说我应该嘲笑IIdentity???
-
我指的是这部分现在“我有一个动作可以调用我在服务层中定义的某些方法”。你应该模拟服务调用和服务的返回值。这样你就可以用你得到的任何返回值对你的“动作”进行单元测试。
-
附带说明,当且仅当由于单元测试导致空引用错误来自您的操作代码时,您的操作需要一些调整来处理空值。这也意味着您的单元测试在一定程度上发挥了作用。
标签: asp.net-mvc unit-testing identity