首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法让`toHaveBeenCalledWith`匹配一个正则表达式?

toHaveBeenCalledWith是一个Jasmine测试框架中的一个函数,用于验证一个函数是否被调用,并且传入了特定的参数。它通常用于测试函数的调用情况。

在Jasmine中,toHaveBeenCalledWith函数默认是通过严格相等(===)来匹配参数的。也就是说,它要求参数的值和类型都完全一致才能匹配成功。

然而,Jasmine并没有直接提供让toHaveBeenCalledWith匹配一个正则表达式的方法。但是我们可以通过自定义匹配器(custom matcher)来实现这个功能。

自定义匹配器是一种扩展Jasmine的方式,可以根据自己的需求定义新的匹配规则。下面是一个示例的自定义匹配器,用于让toHaveBeenCalledWith匹配一个正则表达式:

代码语言:txt
复制
// 自定义匹配器:toMatchRegex
const toMatchRegex = (util, customEqualityTesters) => {
  return {
    compare: (actual, expected) => {
      const pass = expected.test(actual);
      const message = pass
        ? `Expected ${actual} not to match ${expected}`
        : `Expected ${actual} to match ${expected}`;

      return { pass, message };
    }
  };
};

// 在beforeEach或全局范围注册自定义匹配器
beforeEach(() => {
  jasmine.addMatchers({
    toMatchRegex: toMatchRegex
  });
});

// 使用自定义匹配器
it('should match a regular expression', () => {
  const mockFunction = jasmine.createSpy('mockFunction');
  mockFunction('123');

  expect(mockFunction).toHaveBeenCalledWith(jasmine.matchRegex(/\d+/));
});

在上述示例中,我们定义了一个名为toMatchRegex的自定义匹配器。它接受两个参数:actual表示实际参数,expected表示期望的正则表达式。在compare函数中,我们使用test方法来判断实际参数是否匹配期望的正则表达式。最后,根据匹配结果返回一个包含passmessage属性的对象。

在使用自定义匹配器时,我们需要在beforeEach或全局范围内注册它,以便在测试中使用。然后,我们可以使用jasmine.matchRegex来创建一个表示正则表达式的特殊参数,并将其传递给toHaveBeenCalledWith函数进行匹配。

需要注意的是,以上示例中的自定义匹配器仅为演示目的,并未提供腾讯云相关产品和链接。在实际使用中,你可以根据自己的需求和环境,结合腾讯云的相关产品和服务,进行更具体的测试和开发工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP使用正则表达式匹配中文,有部分匹配不出来的解决办法

今天在开发的时候有个需要,就是匹配出一条计价公式里的材料文本,示例:[羊脂玉价格]*[羊脂玉重量]+[白金价格]*[白金重量]+[皓石价格]*[皓石重量]+[钻石价格]*1.5*[钻石重量]+[硬金价格...]*1.67*[硬金重量],要匹配出[***_价格],就是中括号内,以_价格结尾的字符串(代表材料的名称),我用的语言是PHP,写了一条正则表达式出来,代码如下: $pattern = "/\\[([^..._价格]+)_价格\\]/"; $res = preg_match_all($pattern, $s, $matches); var_dump($matches); ,前面三个能匹配出来,但“钻石”一直匹配不到...,非常奇怪,后面测试了一下,跟匹配的数量没有关系,因为如果把“钻石”也改成“白金”的话是能匹配出来的,改成“石”字的话也可以匹配出来,根据这种现象判断,感觉有可能是字符集的问题,有可能是默认的字符集中是没有...“钻”这个字的,所以匹配不到,后面搜索了很多网友关于PHP使用正则匹配中文的文章,发现最全面的匹配方式是使用16进制的,换过来后,果然成功了,故分享出来,以飨大家,最终的代码如下: $s = ‘[羊脂玉价格

85610
  • 面试官:实现一个正则表达式匹配」算法吧 ...

    正则表达式匹配」,难度为 Hard。 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.'...匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖整个字符串 s 的,而不是部分字符串。...示例 2: 输入:s = "aa" p = "a*" 输出:true 解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。...:能够匹配 s 中同一位置的任意字符 '*':不能够单独使用 '*',必须和前一个字符同时搭配使用,数据保证了 '*' 能够找到前面一个字符。能够匹配 s 中同一位置字符任意次。...for (int i = 0; i <= n; i++) { for (int j = 1; j <= m; j++) { // 如果下一个字符是

    1.5K20

    一个人正在TikTok想办法人们相信他是AI

    ---- 新智元报道   编辑:武穆 【新智元导读】科学家们正努力AI看起来更像人,然而有人却想别人以为他是AI。...公众的反应Skelton大吃一惊,尤其是当人们开始搜索他在互联网上的表现,试图判断他是否是一个人工智能生成的机器人时。...他说:「人们在我的Instagram上留言,问我是不是真的,还有我女朋友的Instagram,她知道我其实是一个机器人。」...「我不同意Skelton本身就是一种责任,」她补充道,「但他写剧本和发布这段视频时的冷漠,我担心他是否真的考虑过他行为的后果。」...那部分真的我很沮丧。」 有一次,Skelton 考虑删除他的整个账户。但随后他收到了一条短信——他称之为「有史以来最伟大的短信」。Skelton拒绝透露文本来自谁或内容。

    20710

    一个正则表达式引发的血案,线上CPU100%异常!

    也就是说,NFA 自动机会读取正则表达式一个一个字符,然后拿去和目标字符串匹配匹配成功就换正则表达式的下一个字符,否则继续和目标字符串的下一个字符比较。...首先,拿到正则表达式的第一个匹配符:d。于是那去和字符串的字符进行比较,字符串的第一个字符是 T,不匹配,换下一个。第二个是 o,也不匹配,再换下一个。...读取到正则表达式的第三个匹配符:y。那着继续和字符串的第五个字符 y 比较,又匹配了。尝试读取正则表达式的下一个字符,发现没有了,那么匹配结束。...NFA 对其解析的过程是这样子的: 首先,读取正则表达式一个匹配符 a 和 字符串第一个字符 a 比较,匹配了。于是读取正则表达式第二个字符。...c" 复制代码 正则表达式的第一个操作符 a 与 字符串第一个字符 a 匹配匹配成。于是正则表达式的第二个操作符 b{1,3}? 和 字符串第二个字符 b 匹配匹配成功。

    73110

    如何测试 React 异步组件?

    ---- 对于异步组件,有两件步骤需要进行测试: 第一:测试异步方法本身有没有被调用,并且传了正确的参数。 第二:在调用之后,应用程序应该做出响应。 一起来看看代码中该如何实现?...假设你有一个用 React 编写的小型博客应用程序。有一个登录页面,还有有一个文章列表页面,内容就跟我的博客一样。...登录测试 先来实现登录页,先脑补一个效果图吧 我们先来写下测试用例 界面包含账号和密码输入框 接口请求包含 username 和 password 防止登录重复点击 登录成功跳转页面 登录失败显示错误信息...(); }); 通过 toHaveBeenCalledTimes 测试调用次数,通过 toHaveBeenCalledWith 测试调用方法的参数,虽然这边是空数据,但是我们也可以写,确保调用参数是空...为此,我们使用 waitFor 方法,同时检查标题是否呈现,之后遍历检查,确保每一个标题在页面上。

    3.3K50

    推荐一个好用的小工具!用它+正则 匹配文本,方便百倍

    想必您一定听说过正则匹配和替换,也一定知道它的强大,它的简洁。的确,使用它可以帮助我们实现很多复杂的功能,同时也会让我们少写很多行代码。...正则是很强大,不过要想实现这种效果,需要我们付出一些代价,比如: 正则语法规相对较多,我们得花时间去学; 正则表达式使用起来比较容易出错; 错一点都不会实现想要的功能,弄不好就出一个bug 那么,有没有办法降低使用它的代价成本呢...如果有一款小工具,我们在里面输入一个正则表达式,再输入几个测试例子,立即所见所得,验证表达式是否准确。 如果可以实现,那么岂不是可以大大降低出错的概率吗! 你还别说,真的有这种小工具。...左上为:正则表达式输入区, 右上为测试历史, 中间为输入的测试样例, 下面为匹配的字符串。 输入完成后,只需要点击:List All Regex Matches,即可看到下面匹配颜色标记的字符串。...点击匹配选项,查看匹配得到字符串结果,如下: ? 通过这个工具,不但马上可以验证我们的想法,同时还会帮助我们更好地理解正则表达式匹配规则, 那么,快去下载吧。

    1.1K30

    正则表达式太慢?这里有一个提速100倍的方案(附代码)

    然而, 在处理大文本的情境下,正则表达式的低效率却常常人抓耳挠腮。今天,文摘菌将为你介绍一款比正则表达式快数百倍的Python库——FlashText。...人抓狂的数据清洗工作 即便是最简单的文本分析,我们在进入正式分析之前也需要对文本作出数据清洗。清洗的工作往往涉及到搜索和替换关键词。...这种情况下,运行正则表达式的时间就往往要以“天“来作计数单位了。 吓哭了的文摘菌 当然了,你会觉得并行运算能够解决这一问题,但实际上这一方案却收效甚微。有没有其他办法呢?...关键字只有在它的两边有单词边界时才能被匹配。这样可以防止apple和pineapple的匹配。 接下来,我们将输入一个字符串I like Python,并且一个字符一个字符搜索他、它。...因为该算法是一个字符接一个字符匹配,在搜索I时,我们可以很容易地跳过like在,因为I没有接在后面。这一机制让我们可以很快跳过词库中不存在的词。

    2.4K40

    正则表达式笔记

    then 和 than,当我写完一篇英语文章,我想搜索一下这两个单词,看看有没有误用的情况,怎么办?...其中的方括号在正则表达式中是一个元字符,它表示匹配若干字符之一,所以上面表达式的意思是匹配t,然后是h,然后是a或e,然后是n。怎么样?还好理解吧。 如果我想匹配一个数字,怎么办?...除此之外,我们可以把逗号替换成tab符,一种办法是在文件中输入一个tab符,然后把这个tab符复制粘贴到Replace With中,第二种办法就是使用字符转义\t。...当然,如果匹配一个非组成单词的字符,该怎么办呢?不知道? 好好想想。看看上面的非数字,你猜对了,是 \W,当然也可以这样[^\w]。 大家知道什么叫空白字符吗?...\d{30} 有时候,我们并不能确定有多少个数字,甚至有时候我们连有没有数字也无法确定,该怎么匹配呢?

    1K20

    这可能是迄今为止最好的一篇正则入门教程-上

    入门 测试正则表达式 元字符 字符转义 重复 字符类 本文目标 30分钟内你明白正则表达式是什么,并对它有一些基本的了解,你可以在自己的程序或网页里使用它。...这里只是你明白基本的原理,以后你还需要多练习,多使用,才能熟练掌握正则表达式。 除了作为入门教程之外,本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。...假设你在一篇英文小说里查找 hi,你可以使用正则表达式 hi 。 这几乎是最简单的正则表达式了,它可以精确匹配这样的字符串:由两个字符组成,前一个字符是h,后一个是i。...这里的匹配是指是字符串里有没有符合表达式规则的部分。如果不使用^和$的话,对于\d{5,12}而言,使用这样的方法就只能保证字符串里包含5到12连续位数字,而不是整个字符串就是5到12位数字。...,或者 * ,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用 \ 来取消这些字符的特殊意义。因此,你应该使用 \. 和 \* 。当然,要查找 \ 本身,你也得用 \\.

    93410

    实验:用Unity抓取指定url网页中的所有图片并下载保存

    突发奇想,觉得有时保存网页上的资源非常麻烦,有没有办法输入一个网址就批量抓取对应资源的办法呢。 需要思考的问题: 1.如何得到网页url的html源码呢?...而且有时候,即使是在标签之内的图片地址,还是有可能出现内链或是外链的区别,外链的话直接作为合法的url地址执行即可,但如果是内链的话就还要补全域名地址,所以我们还需要想办法识别一个url的正确域名...关于如何识别匹配以上所说的字符串内容,目前最有效的方法就是正则表达式,下面就列举在本例中需要使用到的正则表达式: 1.匹配url域名地址: private const string URLRealmCheck...string png = @"\.png"; 关于正则表达式的具体匹配用法,网上也有很多教程,这里就不说了。...使用正则表达式需要引入以下命名空间: ? 利用正则表达式匹配出所有的imgLinks后就可以对其中的图片进行依次下载了。 第三步,对有效的图片url进行下载传输: ?

    3.4K30

    正则表达式必知必会 - 使用子表达式

    子表达式嵌套能够构造出功能极其强大的正则表达式,但这难免会模式变得难以阅读和理解,多少有些人望而却步。其实大多数嵌套子表达式并没有它们看上去那么复杂。...(\d{1,3}\.){3}\d{1,3} 这个模式能匹配 345、700、999 这些无效的 IP 地址数字。有一点很重要。写一个能够匹配预期内容的正则表达式并不难。...但是写一个能够考虑到所有可能场景,确保将不需要匹配的内容排除在外的正则表达式可就难多了。        ...如果有办法设定有效的取值范围,事情会简单得多,但正则表达式只是匹配字符,并不真正了解这些字符的含义。所以就别指望数学运算了。有没有别的办法呢?也许有。...在构造一个正则表达式的时候,一定要定义清楚想匹配什么,不想匹配什么。一个有效的 IP 地址中每组数字必须符合以下规则。 任意的 1 位或 2 位数字。 任意的以 1 开头的 3 位数字。

    19630

    【手写Vue】-手撕Vue-查找指令和模板

    大致的思路是这样的: 遍历所有的节点 需要判断当前遍历到的节点是一个元素还是一个文本 如果是一个元素, 我们需要判断有没有v-model属性 如果是一个文本, 我们需要判断有没有 {{}} 的内容 那么随着思路的展开..., 用来匹配 {{}} // 如下正则表达式的含义是: 匹配 {{}} 中间的内容 // /: 正则表达式通常以斜杠 / 开始和结束,表示正则表达式的开始和结束。...表示匹配任意字符,+ 表示匹配一个或多个前面的字符,? 表示非贪婪匹配,即尽可能匹配最短的内容。这样确保匹配到最近的结束双花括号 }}。...// /g: g 是正则表达式的标志,表示全局匹配,即匹配字符串中的所有符合条件的部分。 // /i: i 也是正则表达式的标志,表示不区分大小写匹配,这意味着 {{...}}...都会被匹配到。 // 因此,这个正则表达式可以用于在字符串中找到并提取所有的 {{...}} 结构,不区分大小写,不贪婪匹配,且匹配所有出现的情况。

    16200

    正则表达式30分钟入门教程 转

    #comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释人阅读 我们已经讨论了前两种语法。第三个(?...有没有办法在这样的字符串里匹配到最长的,配对的括号之间的内容呢? 为了避免(和\(把你的大脑彻底搞糊涂,我们还是用尖括号代替圆括号吧。..."group",第三个就是看黑板上写的还有没有"group",如果有就继续匹配yes部分,否则就匹配no部分。...#在遇到最外层的右括号前面,判断黑板上还有没有没擦掉的"Open";如果还有,则匹配失败 > #最外层的右括号 平衡组的一个最常见的应用就是匹配HTML...要投诉我,或者觉得我其实可以忽悠得更高明,欢迎来我的微博我知道. 如果你有关于正则表达式的问题, 可以到 stackoverflow 网站上提问, 记得要添加 regex 标签.

    89920

    正则表达式30分钟入门教程--deerchao

    正则表达式30分钟入门教程 版本:v2.31 (2009-4-11) 作者:deerchao 转载请注明来源 本文目标 30分钟内你明白正则表达式是什么,并对它有一些基本的了解,你可以在自己的程序或网页里使用它...这里只是你明白基本的原理,以后你还需要多练习,多使用,才能熟练掌握正则表达式。 除了作为入门教程之外,本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。...有没有办法在这样的字符串里匹配到最长的,配对的括号之间的内容呢? 为了避免(和\(把你的大脑彻底搞糊涂,我们还是用尖括号代替圆括号吧。..."group",第三个就是看黑板上写的还有没有"group",如果有就继续匹配yes部分,否则就匹配no部分。...#在遇到最外层的右括号前面,判断黑板上还有没有没擦掉的"Open";如果还有,则匹配失败 > #最外层的右括号 平衡组的一个最常见的应用就是匹配HTML

    1.9K40
    领券