MAIBILAI

javascript - 在 Jest 中,如何使测试失败?

coder 2024-05-09

我知道我可能会从测试内部抛出错误,但我想知道是否有 Jasmine 提供的全局 fail() 方法之类的东西?

最佳答案

Jest 实际上使用了 Jasmine,因此您可以像以前一样使用 fail

示例调用:

fail('it should not reach here');

这是 Jest 的 TypeScript 声明文件中的定义:

declare function fail(error?: any): never;

如果您知道某个特定调用应该失败,您可以使用 expect

expect(() => functionExpectedToThrow(param1)).toThrow();
// or to test a specific error use
expect(() => functionExpectedToThrow(param1)).toThrowError();

参见 Jest docs有关传递字符串、正则表达式或错误对象以测试 toThrowError 方法中的预期错误的详细信息。

对于异步调用使用.rejects

// returning the call
return expect(asyncFunctionExpectedToThrow(param1))
  .rejects();
// or to specify the error message
// .rejects.toEqual('error message');

使用async/await你需要用async标记测试函数

it('should fail when calling functionX', async () => {
  await expect(asyncFunctionExpectedToThrow(param1))
    .rejects();
  // or to specify the error message
  // .rejects.toEqual('error message');
}

请参阅有关 .rejects 的文档在tutorial .

另请注意 Jasmine fail 函数可能会在 Jest 的 future 版本中删除,请参阅 Yohan Dahmani 的评论。您可以开始使用上面的 expect 方法或执行查找并将 fail 替换为 throw new Error('it should not reach here');正如其他答案中提到的。如果您更喜欢 fail 的简洁性和可读性,那么当 Jasmine 函数从 Jest 中移除时,您总是可以创建自己的函数。

function fail(message) {
  throw new Error(message);
}

关于javascript - 在 Jest 中,如何使测试失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42176642/

有关javascript - 在 Jest 中,如何使测试失败?的更多相关文章

  1. c# - 使用 Visual Studio 在 C# 中进行单元测试入门 - 2

    我知道VisualStudio提供了一些单元测试的好东西。我如何使用它们,你如何使用它们?关于单元测试我应该知道些什么(假设我什么都不知道)。Thisquestion是相似的,但它没有说明VisualStudio可以做什么,因此请不要将其标记为重复。作为CommunityWiki发布是因为我不想成为代表妓女。 最佳答案 很明显,最显着的区别是MSTest支持内置于VisualStudio中,并直接提供单元测试、代码覆盖率和模拟支持。为了在外部(第三方)单元测试框架中做相同类型的事情,通常需要多个框架(一个单元测试框架和一个模拟框架)

  2. c# - 如何解决 .NET Core 包版本冲突 - 2

    我正在从一个.NETMVC5Web应用程序迁移到一个.NETCore2.2WebAPI项目以及五个.NETStandard2.0项目,它们都位于一个解决方案下。我现在收到28条关于包冲突的警告(MSB3277),它们都在System命名空间内。例如,Version=4.0.11.0和Version=4.0.14.0之间的System.Collections.Concurrent似乎存在版本冲突(请参阅下面的错误block)。故障排除尝试:我尝试卸载所有我不使用的.NETCoreSDK,目前安装了2.2.300。那没有用。我尝试在解决方案级别进入NuGet以安装缺少的程序集,但4.0.1

  3. c# - 如何通过比较两个 c# 对象来创建 JsonPatchDocument? - 2

    鉴于我有两个相同类型的c#对象,我想比较它们以创建一个JsonPatchDocument。我有一个这样定义的StyleDetail类:publicclassStyleDetail{publicstringId{get;set;}publicstringCode{get;set;}publicstringName{get;set;}publicdecimalOriginalPrice{get;set;}publicdecimalPrice{get;set;}publicstringNotes{get;set;}publicstringImageUrl{get;set;}publicboo

  4. c# - 如何将 ruby​​ gem 嵌入到 C# 项目中并从嵌入式 IronRuby 脚本中获取它? - 2

    我有一个C#项目,其中嵌入了一个IronRuby程序。该项目(包括我的ruby​​脚本)在VisualStudio2010中编译为.exe文件以供分发。我正在使用与此类似的模式来引导IronRuby脚本:http://pastebin.com/NKes1cyc(JimmySchementi在此处进行了更详细的介绍:http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html)。我的问题:我想在我的C#程序集中嵌入一个gem(json_pure)并从ruby​​脚本中调用它。我找到的一些资源:在JR

  5. c# - 如何发出 System.Linq.Expression? - 2

    我有一些代码可以生成各种Func<>代表使用System.Linq.Expressions和Expression.Lambda<Func<>>.Compile()等等我希望能够将生成的函数序列化为一个程序集供以后使用。过去我用System.Reflection.Emit做了一些事情,但现在Linq表达式我不想再走那条路了。是否有一种机制可以序列化已编译的表达式或来自Expressions的某种桥接器?命名空间到Emit命名空间?编辑上下文的一些背景:我正在研究一个查询引擎(主要是为了我自己的熏陶和享受)。给定一条SQL语句,我想将其解析并转换为lam

  6. c# - 如何解锁被 .NET 中的进程锁定的文件 - 2

    这个问题在这里已经有了答案:UnlockFilesfordeletion(2个答案)关闭6年前。我希望我的应用程序清除它使用的所有临时文件,问题是并非所有临时文件都在我的控制之下,所以我只想“粗暴地”解锁它们以便以编程方式删除它们。

  7. c# - 我如何知道必须使用哪些 cookie 才能发出正确的 HttpWebRequest? - 2

    我正在开发一个下载管理器并尝试使用HttpWebRequest获取cookie所需的内容。我想将我的应用程序集成到Chrome,这样我就可以从浏览器中获取必要的cookieheader和值。但首先我需要知道是否需要cookie来获取要下载的内容,以及它们是哪些cookie。我找不到关于此主题的任何有用资源。ThisiswhatIimagine:HttpWebRequestreq=(WebRequest.Create(url))asHttpWebRequest;//Atfirst,getifcookiesarenecessary?//Ifitis,gettherequiredcookie

  8. c# - 如何使用 SignalR 从 ASP.NET MVC 3 通知 Web 客户端 MSMQ 任务已完成 - 2

    如何使用SignalR在.NET4.0系统中实现通知,该系统由ASP.NETMVC3应用程序(使用表单例份验证)、SQLServer2008数据库和MSMQWCF服务(托管在WAS中)组成以处理数据?运行环境由运行在WindowsServer2008R2标准版上的IIS7.5组成。我只玩过示例,对SignalR没有广泛的了解。这是一些背景Web应用程序接受来自用户的数据并将其添加到表中。然后它调用WCF服务的单向操作(使用数据库键)来处理数据(任务)。Web应用程序返回一个页面,告诉用户数据已提交,处理完成后他们会收到通知。用户可以查看“索引”页面,了解哪些任务已完成、失败或正在进行中

  9. c# - 我如何在 SQL 中使用枚举而不在我的 SQL 脚本/过程中硬编码魔数(Magic Number)? - 2

    我们的C#代码中有枚举:publicenumJobStatus{Ready=0,Running=1,Cancelling=2,}这些值也存储在数据库字段中,我们有很多TSQL(主要是存储过程,以及一些批处理和SSIS)也处理数据:SELECTTOP1@JobSID=JobSIDFROMJobWHEREStatus=0/*JobStatus.Ready*/ORDERBYSubmitDateASCCREATETABLEImportCrossEffect(/*lotsdeleted*/SourcetinyintDEFAULT1NOTNULL--0:Unknown(default),1:Imp

  10. c# - 我应该如何从屏幕空间坐标转换为 WinForms PictureBox 中的图像空间坐标? - 2

    我有一个在Windows窗体PictureBox控件中显示图像的应用程序。控件的SizeMode设置为Zoom,这样PictureBox中包含的图像将以纵横比正确的方式显示,而不管PictureBox的尺寸。这对于应用程序的视觉外观非常有用,因为您可以根据需要调整窗口大小,并且图像将始终以最适合的方式显示。不幸的是,我还需要处理图片框上的鼠标点击事件,并且需要能够从屏幕空间坐标转换为图像空间坐标。看起来很容易从屏幕空间转换到控制空间,但我没有看到任何明显的方法从控制空间转换到图像空间(即在图片中缩放的源图像中的像素坐标框)。有没有一种简单的方法可以做到这一点,还是我应该复制他们在内部使

随机推荐

  1. c# - 构建时 T4 转换的产品仅在下一次构建中使用 - 2

    我有一个VS项目,其中包含:在template.tt上运行TextTransform的预构建操作以生成generated.csgenerated.cs列为要编译的文件之一(即在项目文件列表中)我在构建项目时,执行了预构建Action,重新创建了generated.cs,但是VS编译的是之前版本的generated.cs(我猜它是在构建过程开始时加载到内存中的)。如何使构建使用新版本的generated.cs(即在预构建操作中生成的)?如何强制构建顺序?请注意,文本转换输入是动态的,因此无法在设计时完成。 最佳答案 我认为您不需要自定

  2. c# - 我应该如何从屏幕空间坐标转换为 WinForms PictureBox 中的图像空间坐标? - 2

    我有一个在Windows窗体PictureBox控件中显示图像的应用程序。控件的SizeMode设置为Zoom,这样PictureBox中包含的图像将以纵横比正确的方式显示,而不管PictureBox的尺寸。这对于应用程序的视觉外观非常有用,因为您可以根据需要调整窗口大小,并且图像将始终以最适合的方式显示。不幸的是,我还需要处理图片框上的鼠标点击事件,并且需要能够从屏幕空间坐标转换为图像空间坐标。看起来很容易从屏幕空间转换到控制空间,但我没有看到任何明显的方法从控制空间转换到图像空间(即在图片中缩放的源图像中的像素坐标框)。有没有一种简单的方法可以做到这一点,还是我应该复制他们在内部使

  3. c# - GDPR : Encrypted logging in C# - 2

    加密日志文件作为保护其中可能包含的个人数据的一种方法的建议很普遍。我还没有看到一个很好的引用实现,考虑到有多少公司需要它,这令人惊讶。在我们的特殊情况下,我们希望使用公钥加密,这样文件就无法在生成它们的(保护较弱的)系统上读取,并且必须被发送回我们可以查看它们的总部。到目前为止,我看到的最好的建议是“使用log4net,但使用来自BouncyCaSTLe的RFC3852流式实现来编写您自己的附加程序”。有人对此有进展吗? 最佳答案 从技术上讲,加密您的日志消息应该非常容易。使用像Serilog这样的东西你可以简单地创建一个custo

  4. c# - VS 17 打破所有异常 - 2

    VisualStudio2017(有点突然)打破所有异常。这意味着,如果我在异常设置中停用它们(在调试时按CTRL+ALT+E),调试器仍然会中断它们。我不知道这是否只是VS的一个错误,我无法更改因此不得不忍受,或者是否有一个简单的解决方案。这是异常(exception)设置窗口:异常VS中断于:顺便说一句,我也试过那个漂亮的减号(如果我按下它什么也不会发生)或添加一个不可能的条件(VS仍然在异常时中断)。我还测试了其他异常(通过简单地抛出它们),我之前停用了它们,它们也被抛出,我在其他项目中测试了同样的问题,它也出现了:我什至把所有的东西都放到了一个trycatch语句中,但VS仍然

  5. c# - 我应该在每个等待的操作上调用 ConfigureAwait(false) - 2

    我读了这篇文章https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html-但是我看到了一个矛盾:我知道UI线程死锁的问题,因为UI线程阻塞等待异步操作完成,但相同的异步操作同步到UI线程上下文-因此异步操作无法进入UI线程,因此UI线程不会停止等待。文章告诉我们解决方法是不要在UI线程上阻塞,否则您需要使用ConfigureAwait(false)everywhere:Youwouldhavetouseforeveryawaitinthetransitiveclosureofallmethodscalledb

  6. c# - dotnet 核心应用程序以管理员身份运行 - 2

    我有一个需要管理员权限才能运行的dotnet控制台应用程序。我找不到该怎么做。在常规项目中,我会添加一个app.manifest并设置<requestedExecutionLevellevel="requireAdministrator"uiAccess="false"/>但我不知道如何将它嵌入到构建中。我该怎么做? 最佳答案 我发现最简单的解决方法是添加app.manifest文件,其设置类似于netframeworkapp<requestedExecutionLevellevel

  7. c# - C# 中面向铁路的编程 - 如何编写开关函数? - 2

    我一直在关注thisF#ROParticle,并决定尝试在C#中重现它,主要是看看我是否可以。对于这个问题的长度,我们深表歉意,但如果您熟悉ROP,将很容易理解。他从F#discriminatedunion开始......typeResult<'TSuccess,'TFailure>=|Successof'TSuccess|Failureof'TFailure...我将其翻译成一个抽象的RopValue类,以及两个具体的实现(请注意,我已将类名更改为我理解得更好的名称)...publicabstractclassRopValue<TSu

  8. c# - vscode : how to setup debugging mono/c#? - 2

    我正在尝试设置VisualStudioCode(https://code.visualstudio.com/docs/debugging)以在win8上调试c#/mono。我还安装了最新版本的单声道。我向launch.json添加了一个配置并将“类型”更改为单声道(也尝试将“程序”指向调试exe)但我只是收到错误:初始化:无法为适配器ID“mono”创建调试session如何在C#项目上设置调试?编辑:似乎需要gulp脚本?CompilingC#projectswithVSCodeonUbuntu 最佳答案 VisualStudio

  9. c# - 无法在 CollectionChanged 事件期间更改 ObservableCollection - 2

    我有一个CollectionChanged事件绑定(bind)到ObservableCollection。此CollectionChanged事件然后调用另一个函数,该函数旨在使用原始集合中的项目更新另一个集合(相同类型)。我已经阅读了关于“在CollectionChanged事件期间无法更改ObservableCollection”的其他帖子,我完全理解为什么不赞成在CollectionChanged事件中修改集合以及为什么这可能会导致循环引用...但在这种特殊情况下,我没有修改原始集合,我只是将其中的一个项目添加到不相关的集合中。所以我的问题是..我在做什么有什么问题吗?我不明白如

  10. c# - 是否有一个有利于读者的 ReaderWriterLockSlim 等价物? - 2

    我一直在使用ReaderWriterLockSlim一段时间以来,它已经满足了我的需求。当我继续微调我的应用程序时,我发现ReaderWriterLockSlim对于我的用例来说略显次优。根据文档(和我的经验),它有利于作者而不是读者(即当读者和作者排队时,作者将获得优先权)。但是,我需要一个有利于读者的等价物。我了解此类组件的副作用(尤其是writer饥饿问题)。是否有人可以指出任何生产就绪的等价物?谢谢。 最佳答案 根据MSDN,ReaderWriterLockSlim支持编写器。这意味着当队列中有读者和作者时,作者将获得优先权