当前位置: 首页 > 知识库问答 >
问题:

使用IPrincipal集对ASP.NET Web API进行单元测试

柯甫
2023-03-14

我试图对一个Web API控制器进行单元测试。以前,在对标准MVC控制器进行单元测试时,我已经能够模拟HttpContext/request/user并通过设置控制器上下文来插入它们。但是,这不适用于Web API控制器(ControllerContext的构造函数显然不接受Web API)。

到目前为止,我有以下内容来设置请求对象。

HttpConfiguration configuration = new HttpConfiguration();
HttpRequestMessage request = new HttpRequestMessage();

controller.Request = request;
controller.Request.Properties["MS_HttpConfiguration"] = configuration;
Thread.CurrentPrincipal = //Set User
HttpContext.Current = //Set User

共有1个答案

姬歌者
2023-03-14

在最新版本的web api中,您可以直接在apicontroller上设置用户,如下所示

[TestMethod]
public void GetReturnsProduct()
{
    // Arrange
    var username = "username@example.com"
    var user = new ClaimsPrincipal(new CustomIdentity(username));
    var controller = new ProductsController(repository);
    controller.Request = new HttpRequestMessage();
    controller.Configuration = new HttpConfiguration();
    controller.User = user;


    // Act
    var response = controller.Get(10);

    // Assert
    Product product;
    Assert.IsTrue(response.TryGetContentValue<Product>(out product));
    Assert.AreEqual(10, product.Id);
}
 类似资料:
  • 我有这样一个简单的课程: 我想为它写一个测试,下面是一个框架: ErrorLogger类中的logger是由StaticLoggerBinder提供的,所以我的问题是-如何让它工作,以便那些检查“1*logger.error(u作为字符串)”可以工作?在ErrorLogger类中,我找不到一种恰当的方式来嘲笑那个记录器。我曾考虑过反射,并以某种方式访问它,此外,mockito注入也有一个想法(但如

  • 目前正在搜索教程、解释和示例。我试过不同的例子,遇到了不同的错误。我当前的错误是: |错误编译错误编译[单元]测试:启动失败: 在我的测试报告中。它输出: 单元测试结果-摘要未执行测试。 我的“用户pec.groovy”代码是这样的: 有人能帮忙吗。我是圣杯新手。谢谢 除上述问题外,当我在课堂上省略了如下所示的禁忌: 我发现了这个错误: |运行1单元测试...1 of 1|失败:初始化错误(org

  • 问题内容: 我选择的数据库是MongoDB。我正在编写一个数据层API,以从客户端应用程序中抽象实现细节- 也就是说,我实质上是在提供一个公共接口(一个充当IDL的对象)。 我正在以TDD方式测试自己的逻辑。在每个单元测试之前,调用一个方法来创建数据库单例,此后,当测试完成时,将调用一个方法来删除数据库。这有助于促进单元测试之间的独立性。 几乎所有单元测试(即 执行上下文查询 )都需要先进行某种插

  • 我想测试以下骆驼路线。我在网上找到的所有例子都有以文件开头的路由,在我的例子中,我有一个Springbean方法,每隔几分钟就会被调用一次,最后消息被转换并移动到jms以及审计目录。 我对这条路线的写测试毫无头绪。目前我在测试用例中所拥有的是

  • 我正在构建一个android应用程序,它使用Firebase作为后端,并采用模型、视图和演示者架构。然而,Firebase是一种云服务的事实使我的android应用程序中的自动测试变得复杂。到目前为止,我已经构建了大部分身份验证系统,但无法看到如何在我的应用程序中实现Firebase代码的单元测试。在端到端测试方面,我也陷入了困境。 由于测试是任何android应用程序的基础,没有it应用程序开发

  • 我正在尝试对<code>java进行单元测试。lang类。 背景:到目前为止有效的方法 这不是真正的标准,但是将 } 中 (在 Ubuntu 上)中提供的源代码和 rt.jar 中提供的类复制到 中非常简单,然后 JaCoCo maven 插件可以看到它们并为某些类生成合适的输出。 例如,我得到了一些关于来源的报道。 但是我无法覆盖< code>java.lang中的类。调用< code>Byte