单元测试Web Api 2模拟用户

臭学生

我正在尝试在Api Controller测试中模拟User.Identity。

这是我的api方法:

    [Route(Urls.CustInfo.GetCustomerManagers)]
    public HttpResponseMessage GetCustomerManagers([FromUri]int groupId = -1)
    {
        var user = User.Identity.Name;
        if (IsStaff(user) && groupId == -1)
        {
            return ErrorMissingQueryStringParameter;
        }
        ...
    }

我遵循了本文中的建议:在单元测试中ApiController设置User属性以设置User属性。

这是我的测试:

    [TestMethod]
    public void User_Without_Group_Level_Access_Call_GetCustomerManagers_Should_Fail()
    {
        Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("Bob", "Passport"), new[] {"managers"}); 
        var response = m_controller.GetCustomerManagers();

        Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
    }

但是,在运行测试时,User属性始终为null。

我什至在调用User.Identity之前尝试将用于将CurrentPrincipal设置为api方法的行移动,但是它仍然为null。

我究竟做错了什么?如果此方法不适用于Web api 2,那么模拟/模拟User属性的最佳方法是什么?

谢谢!

丢失计算机

您可以在中设置用户ControllerContext.RequestContext.Principal

controller.ControllerContext.RequestContext.Principal = new GenericPrincipal(new GenericIdentity("Bob", "Passport"), new[] {"managers"});

或等效的速记:

controller.User = new GenericPrincipal(new GenericIdentity("Bob", "Passport"), new[] {"managers"});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Web API单元测试的模拟请求对象

来自分类Dev

单元测试 web api

来自分类Dev

无法在C#WEB API REST服务单元测试中模拟Owin上下文

来自分类Dev

使用SPA中的模拟API进行单元测试与E2E测试

来自分类Dev

python中的模拟流API用于单元测试

来自分类Dev

模拟外部API以在NodeJ中进行单元测试

来自分类Dev

单元测试-控制器未从ASP.NET Core Web API项目中的模拟IConfiguration中获取值

来自分类Dev

单元测试Web Api Controller伪造的ApiController。带有自定义标识的用户不起作用

来自分类Dev

api的单元测试

来自分类Dev

在ASP.NET Web API中是否需要对连接到工作单元的存储库进行模拟以进行单元测试?

来自分类Dev

使用Mockito进行Retrofit 2 api调用的单元测试

来自分类Dev

Web API全局设置代码,也用于单元测试

来自分类Dev

删除Web API中的项目单元测试

来自分类Dev

使用xUnit Web API单元测试Get()方法

来自分类Dev

Web API控制器单元测试

来自分类Dev

Web API的单元测试,获取相同的ID

来自分类Dev

在Angular单元测试中模拟异步Web服务

来自分类Dev

使用已登录的Web用户进行Yii单元测试

来自分类Dev

Rest API 的单元测试

来自分类Dev

Django单元测试模拟

来自分类Dev

在使用Moq和AutoFixture进行单元测试API时模拟HttpResponseMessage

来自分类Dev

如何在与Jest的react-native中使用模拟的fetch()对API调用进行单元测试

来自分类Dev

模拟远程HTTPS API进行QML应用程序单元测试的好方法是什么?

来自分类Dev

模拟 API 响应时如何在单元测试中使用 JSON 文件

来自分类Dev

在Visual Studio 2013中使用HttpClient进行单元测试/集成测试Web API

来自分类Dev

在Visual Studio 2013中使用HttpClient进行单元测试/集成测试Web API

来自分类Dev

带有 OAuth2 隐式的单元测试 API

来自分类Dev

Angular 2单元测试

来自分类Dev

Mandrill API Java单元测试

Related 相关文章

  1. 1

    Web API单元测试的模拟请求对象

  2. 2

    单元测试 web api

  3. 3

    无法在C#WEB API REST服务单元测试中模拟Owin上下文

  4. 4

    使用SPA中的模拟API进行单元测试与E2E测试

  5. 5

    python中的模拟流API用于单元测试

  6. 6

    模拟外部API以在NodeJ中进行单元测试

  7. 7

    单元测试-控制器未从ASP.NET Core Web API项目中的模拟IConfiguration中获取值

  8. 8

    单元测试Web Api Controller伪造的ApiController。带有自定义标识的用户不起作用

  9. 9

    api的单元测试

  10. 10

    在ASP.NET Web API中是否需要对连接到工作单元的存储库进行模拟以进行单元测试?

  11. 11

    使用Mockito进行Retrofit 2 api调用的单元测试

  12. 12

    Web API全局设置代码,也用于单元测试

  13. 13

    删除Web API中的项目单元测试

  14. 14

    使用xUnit Web API单元测试Get()方法

  15. 15

    Web API控制器单元测试

  16. 16

    Web API的单元测试,获取相同的ID

  17. 17

    在Angular单元测试中模拟异步Web服务

  18. 18

    使用已登录的Web用户进行Yii单元测试

  19. 19

    Rest API 的单元测试

  20. 20

    Django单元测试模拟

  21. 21

    在使用Moq和AutoFixture进行单元测试API时模拟HttpResponseMessage

  22. 22

    如何在与Jest的react-native中使用模拟的fetch()对API调用进行单元测试

  23. 23

    模拟远程HTTPS API进行QML应用程序单元测试的好方法是什么?

  24. 24

    模拟 API 响应时如何在单元测试中使用 JSON 文件

  25. 25

    在Visual Studio 2013中使用HttpClient进行单元测试/集成测试Web API

  26. 26

    在Visual Studio 2013中使用HttpClient进行单元测试/集成测试Web API

  27. 27

    带有 OAuth2 隐式的单元测试 API

  28. 28

    Angular 2单元测试

  29. 29

    Mandrill API Java单元测试

热门标签

归档