我正在使用ASP.NET Web API的单元测试编写测试用例.

现在我有一个操作,它调用了我在服务层中定义的某个方法,我在服务层中使用了以下代码行.

string username = User.Identity.Name;
// do something with username
// return something

现在我如何为这个创建单元测试方法,我得到了空引用异常.我对编写单元测试之类的东西有点陌生.

我只想为此使用单元测试.请帮我解决这个问题.

推荐答案

下面的方法只是一种:

public class FooController : ApiController {

    public string Get() {

        return User.Identity.Name;
    }
}

public class FooTest {

    [Fact]
    public void Foo() {

        var identity = new GenericIdentity("tugberk");
        Thread.CurrentPrincipal = new GenericPrincipal(identity, null);
        var controller = new FooController();

        Assert.Equal(controller.Get(), identity.Name);
    }
}

Asp.net相关问答推荐

包含Include的低速EF核心查询

如何在 C#/MVC 4 中的 Html.TextBoxFor 中输入占位符文本

从 asp.net 中的 Web.config 获取连接字符串

如何在 C# 中生成一个随机的 10 位数字?

如何获取已构建、编码的 ViewState 的值?

/应用程序中的服务器错误. ASP.NET

无法读取配置部分system.servicemodel,因为它缺少部分声明

用户NT AUTHORITY\NETWORK SERVICE登录失败

区分开发、登台和生产环境之间的 web.config

你如何确定哪个验证器失败了?

VirtualPath 在当前应用程序根目录之外

如何在新实现的接口或基类之间做出决定?

从后面的 asp.net 代码中读取表单身份验证 cookie

在asp.net控件之间动态添加

如何在 ASP.NET 中获取原始请求正文?

.NET - c# - 需要跨分区查询,但在 DocumentDB 数据访问上禁用了问题

ContentResult 与字符串

ASP.net 网站中的 C# 密码文本框

IIS 是否执行非法字符替换?如果是这样,如何阻止它?

RegisterStartupScript 不适用于 ScriptManager、Updatepanel.这是为什么?