如何从通过 API 返回的 Task 获取值以进行单元测试

2023-12-29

我使用 ASP.NET MVC Core v2.1 创建了一个 API。我的一个HttpGet方法设置如下:

public async Task<IActionResult> GetConfiguration([FromRoute] int? id)
{
    try
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        ..... // Some code here

        return Ok(configuration);
    }
    catch (Exception ex)
    {
        ... // Some code here
    }
}

当进行单元测试时,我可以检查响应是否为“Ok”,但我确实需要查看配置的值。我似乎无法让它与以下内容一起使用:

[TestMethod] 
public void ConfigurationSearchGetTest()
{
    var context = GetContextWithData();
    var controller = new ConfigurationSearchController(context);
    var items = context.Configurations.Count();
    var actionResult = controller.GetConfiguration(12);

    Assert.IsTrue(true);
    context.Dispose();
}

在运行时,我可以检查actionResult有某些我无法编​​码的值。我做错了什么吗?或者我只是想错了?我希望能够做到:

Assert.AreEqual(12, actionResult.Values.ConfigurationId);

您无需更改返回类型即可获得经过测试的控制器。
IActionResult是所有其他类型的基本类型。
将结果转换为预期类型并将返回值与预期进行比较。

由于您正在测试异步方法,因此也使测试方法异步。

[TestMethod] 
public async Task ConfigurationSearchGetTest()
{
    using (var context = GetContextWithData())
    {
        var controller = new ConfigurationSearchController(context);
        var items = context.Configurations.Count();

        var actionResult = await controller.GetConfiguration(12);

        var okResult = actionResult as OkObjectResult;
        var actualConfiguration = okResult.Value as Configuration;

        // Now you can compare with expected values
        actualConfuguration.Should().BeEquivalentTo(expected);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从通过 API 返回的 Task 获取值以进行单元测试 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 仅在 CopyObject 中拒绝 Amazon S3 访问

    我从 nodejs 脚本上传文件 当我尝试复制对象时 我收到 访问被拒绝 错误 如果我尝试删除该对象或获取它 没有问题并且成功 CopyObject 中有什么特殊的吗 params Bucket buacket name CopySourc
  • 使用 Ajax 更新 Rails 中的元素

    该应用程序允许用户对嵌入视频进行投票 当用户点击上下箭头时 整个页面刷新更新points 几个月来我一直在尝试实现 AJAX 投票 我想要您能提供的最直接的解决方案 即使它不是最有效的 有任何想法吗 My up and down行动来自ap
  • 我可以在我的桌面应用程序中使用谷歌语音识别 API

    我想知道我是否可以在我的桌面应用程序中使用 google 的语音识别 api 我见过一些示例 其中我必须将语音转换为文件并发送到网址 但这将是一个不太麻烦的任务 因为在我的应用程序中 用户必须不断提交他的声音 那么还有其他替代方法可以使用
  • iOS SWRevealViewController - 在控制器之间传递数据

    我正在使用 SWRevealViewController 在我的应用程序中实现滑动菜单 从左侧 一切工作正常 但现在我面临一个小问题 我想从我的 主 视图控制器传递数据 完全可见的控制器 我不称其为 frontViewController
  • 分离的实体传递到持久化

    使用 hibernate 3 6 10 maven 2 postgres 9 我有必须工作的代码 但事实并非如此 在我使用 hibernate 3 6 2 并遇到非常沮丧的错误之前 java lang ClassCastException
  • Composer 未安装本地包依赖项

    在我的 Laravel 5 4composer json 文件中 我有以下内容可以自动加载我的自定义包 请注意 该包尚未发布 而是在本地加载 autoload classmap database seeds database factori
  • 如何确定导致分段错误的原因

    我的代码的目标是接受 2 个命令行参数 包括程序名称 并根据给定的第二个命令行参数打印出所示的响应 如果命令行参数是一个整数 则用户的输入被接受或 成功 如果它是其他任何内容 例如字符串或多个命令行参数 则它将为 Null 并显示错误消息
  • 当光标位于页面之外时可以触发鼠标事件吗?

    我正在创建一个游戏 在该游戏中 人们可以按住鼠标按钮并拖动它来旋转对象 但是 当鼠标位置超出页面边界时 将不再触发所有鼠标事件 这意味着当光标位于页面之外时 对象不再旋转 此外 当用户在页面边界之外释放鼠标时 我无法跟踪这意味着当光标返回页
  • 如何使用 AngularJs 调整 SVG viewBox 的大小?

    类似问题的解决方案涉及 CSS 和img tag 但是 我无法使用 img src myFile svg 因为 SVG 包含 Angular 指令 例如
  • ncurses 捕获扩展键(Control-left、Shift-Function 等)

    我试图在我的 ruby 程序中捕获 Control Left Shift F10 等 通常 仅使用 getch 我会得到一个有效的整数列表 例如 27 91 50 50 126 但我担心这些可能取决于系统或终端 经过谷歌搜索后 我发现了 u
  • 为什么Java的String.getBytes()使用“ISO-8859-1”

    来自 java lang StringCoding String csn charsetName null ISO 8859 1 charsetName 这是 Linux jdk 7 中 Java lang getBytes 使用的内容 我
  • Android - 检查设备是否连接到互联网

    有没有简单的方法 如何检查设备是否主动连接到互联网 通过 GPRS EDGE UMTS HSDPA 或 Wi Fi 连接 Thanks 是的 我使用 isReachable public class Extras public static
  • 仿真期间的 Modelica 输出文件

    我进行了很长时间的模拟 并且需要在模拟继续时检查输出 另一个原因是我正在进行实时模拟 所以我也想实时查看输出 如果 OpenModelica 在模拟过程中创建一个输出文件 以便我可以使用第 3 方工具 也许是 Python 读取并绘制它 那
  • 什么是定点整数?

    In http microformats org wiki hreview aggregate http microformats org wiki hreview aggregate it says rating 必需的 定点整数 1 0
  • ggplot2 中的条形图

    有人会帮助使用绘制条形图吗ggplot2对于此数据 我无法为此数据开发条形图 在 ggplot 中 您应该使数据采用更长的格式 为此你可以使用pivot longer from tidyr 这样你就可以创建一个像这样的堆积条形图 df lt
  • SQL Server 2008 - 当列为空时设置一个值

    我正在 SQL Server 2008 数据库上执行 SELECT 语句 SELECT Name DOB Address1 Address2 City State Zip FROM Users 但是 如果上述任何列对于特定行恰好为空 我想将
  • 刺尾没有优雅地退出

    我正在使用以下任一命令通过 Maven 运行 Thorntail 2 2 1 Final 微服务 mvn thorntail start mvn thorntail run 它运行良好 但是当我击中时Ctrl C它不会退出应用程序 即控制台
  • 循环遍历 xml 元素

    我有以下内容 aMyArray null xml userfile Get Content C AppSense Scripts AmPolicyConversion AM dev xml i 0 FOREACH j in userfile
  • numpy.ndarray 与 pandas.DataFrame

    我需要对程序中保存统计数据帧的数据结构基础的选择做出战略决策 我在一张大表中存储了数十万条记录 每个字段都有不同的类型 包括短字符串 我会对需要快速实时完成的数据进行多重回归分析和操作 我还需要使用一些相对流行且支持良好的东西 我知道以下参
  • 如何从通过 API 返回的 Task 获取值以进行单元测试

    我使用 ASP NET MVC Core v2 1 创建了一个 API 我的一个HttpGet方法设置如下 public async Task