Xunit 中的测试异常 ()

2024-04-23

我正在尝试对此方法编写 Xunit 测试:

public async Task<IEnumerable<T>> RunSQLQueryAsync(string queryString)
{
    try
    {
        //do something
    }
    catch (DocumentClientException e)
    {
        throw new InvalidOperationException(e);
    }

}

这是单元测试:

[Fact]
public async virtual Task Test_Exception()
{
    var queryString = "SELECT * FROM c";
    var exception = Record.ExceptionAsync(async () => await classname.RunSQLQueryAsync(queryString));
    Assert.NotNull(exception);
    Assert.IsType<DocumentClientException>(exception);
}

但该方法失败了,它说:

消息:Assert.IsType() 失败预期:System.DocumentClientException 实际:
System.Threading.Tasks.Task`1[[System.Exception, System.Private.CoreLib,版本=4.0.0.0,文化=中性, 公钥令牌=xxx]]

当我调试测试时,它不会进入 catch 块。所以我的问题是如何使单元测试期望该方法RunSQLQueryAsync具有DocumentClientException?


测试不等待Task<Exception>从返回Record.ExceptionAsync所以下面的断言实际上是在Task本身。

此外,被测试的方法消耗了DocumentClientException并抛出一个新的异常InvalidOperationException所以这就是我们所期望的类型。

[Fact]
public async virtual Task Test_Exception() {
    //Arrange
    var queryString = "SELECT * FROM c";

    //Act
    var exception = await Record.ExceptionAsync(() =>
        classname.RunSQLQueryAsync(queryString));

    //Assert
    Assert.NotNull(exception);
    Assert.IsType<InvalidOperationException>(exception);
}

注意前面的awaitRecord.ExceptionAsync

还假设被测类已设置了模拟依赖项,该依赖项将在//do something所提供片段的一部分。

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

Xunit 中的测试异常 () 的相关文章

随机推荐

  • Python 中匹配“中文+数字”模式的正则表达式

    在Python 3 3中 我想匹配下面的模式 但它总是失败 摄氏零下253 我使用了下面的正则表达式 x00 x47 x58 x7F 它不是排除除数字之外的所有 ascii 吗 根据您使用的编程语言 您可以使用以下内容 p Han p N
  • 如何在Linux中使用相对路径打开文件?

    我有一个程序 它使用相对路径 例如 打开文件 现在的问题是 当我从另一个目录执行程序时 相对路径不是相对于程序而是相对于工作目录 因此 如果我使用 path to program myprog 启动程序 它将无法找到该文件 有没有办法独立于
  • 你能检测到 UIViewController 何时被解除或弹出吗?

    每当我的视图控制器之一被解除 弹出 卸载时 我都需要在共享资源中执行一些清理 这可能是当用户点击该单个屏幕上的后退按钮时 或者调用 popToRootViewController 时 在这种情况下 理想情况下我能够清除弹出的每个控制器 显而
  • 创建子列表[重复]

    这个问题在这里已经有答案了 与列表扁平化相反 给定一个列表和长度 n 返回长度为 n 的子列表的列表 def sublist lst n sub result for i in lst sub i if len sub n result s
  • 禁用 RVM 还是使用未安装 RVM 的 Ruby?

    对于 Rails 应用程序 我安装了 Ruby 1 8 7 和 Rails 2 3 11 而且运行良好 之后我安装了 RVM 和 REE 因此 在运行 ruby 脚本 服务器时 它使用 REE 但现在我想使用较旧的 Ruby 1 8 7 它
  • 如何在intelliJ IDEA中分离spring上下文

    我在配置 IntelliJ IDEA 来开发 spring 和 Maven 支持的应用程序时遇到问题 应用程序有两个独立的弹簧配置 用于生产和测试目的 在 IDEA 的 Spring Facet props 中 我创建了两个不同的文件集 但
  • REngine 不调用 R Console

    从其中一个站点收集的代码 它不会从 REngine 调用 R Console 创建REngine后就断掉了 没有去try catch 问题 Rengine re new Rengine args true new TextConsole2
  • 助手在 Rails 3(.2) 中使用大量内存

    在将 Rails 2 应用程序迁移到 Rails 3 时 我遇到了内存使用量的巨大增加 经过一番研究 我发现帮助者是问题所在 取消注释视图中的任何助手会加快一切速度 我试图找到真正问题的事情 include all helpers fals
  • CSS:四个 div,第三个必须占据其余空间

    我在互联网上尝试了几种资源 也如此 但我根本无法解决这个问题 网页上只有四个浮动 div div 1 2 和 4 具有固定宽度 div 3 必须占据剩余的宽度 div 2 和 3 之间必须有填充 所有 div 必须具有 padding 0
  • 这是 GCC 中的错误还是我的代码错误?

    我有这个C代码 int test signed char anim col if anim col gt 31 return 1 else if anim col lt 15 return 2 return 0 使用 Android NDK
  • SQL Server 中的并发执行

    表架构 SQL Server 2012 Create Table InterestBuffer AccountNo CHAR 17 PRIMARY KEY CalculatedInterest MONEY ProvisionedIntere
  • 从文件中读取 GLSL 着色器

    我正在尝试从如下所示的文件中读取顶点和片段着色器 version 330 core in vec3 ourColor out vec4 color void main color vec4 ourColor 1 0f but when i
  • 如何将 ASCII 字符的十六进制值写入文本文件?

    这是我目前所拥有的 void WriteHexToFile std ofstream stream void ptr int buflen char prefix unsigned char buf unsigned char ptr fo
  • 执行错误日志记录的简单方法?

    我创建了一个小型 C winforms 应用程序 作为一项附加功能 我正在考虑向其中添加某种形式的错误日志记录 有人对解决这个问题有什么好的建议吗 这是我从未考虑过添加到以前的项目中的功能 因此我愿意接受有更多经验的开发人员的建议 我正在考
  • HTML 将 Phaser 移动到容器 div 中

    目前正在 Phaser 中制作一个基于浏览器的游戏并尝试将其添加到容器中div我创建的标签 但是移相器似乎将自身推到容器下方div 两张截图对比 http gyazo com 3cc9b9333cf89d7fc879bd2cdc741609
  • 如何在 Strapi 中将用户不可编辑的字段添加到内容类型?

    说我有一个post具有以下 4 个字段的内容类型 title 细绳 content 细绳 slug 细绳 author 关系 如何添加第五个字段 该字段的值取决于上述 4 个字段之一且用户不可编辑 说吧 我想要一个wordCount字段中的
  • CFBundle可执行错误

    无法安装应用程序 Users myname Documents SDK iPhoneApplications x build Debug iphoneos x app 处的应用程序未指定 CFBundleExecutable 我不知道这意味
  • 在 Silverlight 4 中编辑标题

    我们正在开发一个浏览器外的 Silverlight 4 应用程序 并希望在应用程序加载后更改标题 Example public partial class MainPage UserControl public MainPage Initi
  • 递归深度有限的旅行目录树

    我需要递归地处理目录树中的所有文件 但深度有限 这意味着例如在当前目录和前两个子目录级别中查找文件 但不再进一步查找 在这种情况下 我必须处理例如 subdir1 subdir2 file 但不是 subdir1 subdir2 subdi
  • Xunit 中的测试异常 ()

    我正在尝试对此方法编写 Xunit 测试 public async Task