首页 > 解决方案 > 诺克测试的正则表达式匹配失败

问题描述

我正在尝试匹配 URL。

lab.before(async () => {
  nock('https://dev.azure.com')
    .get(centosAzureUri)
    .times(5)
    .reply(201, [
    ...

如果我使用字符串,它工作得很好。下面是一个例子: const centosAzureUri = `/${conf.org}/${conf.buildProject}/_apis/build/builds?api-version=4.1&branchName=${conf.buildBranch}`

但是,我想使用如下的正则表达式: const centosAzureUri = new RegExp(`/${conf.org}/${conf.buildProject}/_apis/build/builds?api-version=4.1.*`, 'g') 那是行不通的。

根据文档,nock应该接受正则表达式并且.*应该匹配任何符号[因为 .] 并允许这些匹配的字符重复任意次数。因此,我假设这应该接受任何字符串结尾,包括&branchName=${conf.buildBranch}.

我做错了什么?

标签: javascriptnode.jsregexnock

解决方案


我认为 nock 只使用正则表达式文字与将返回一个新对象的正则表达式对象。例如。

  nock('http://example.com')
       .get(/harry\/[^\/]+$/)
       .query({param1: 'value'})
       .reply(200, "OK");

请参阅相关 的 How to build nock regex for dynamic urls


推荐阅读