Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nock测试的正则表达式匹配失败_Javascript_Node.js_Regex_Nock - Fatal编程技术网

Javascript nock测试的正则表达式匹配失败

Javascript nock测试的正则表达式匹配失败,javascript,node.js,regex,nock,Javascript,Node.js,Regex,Nock,我正在尝试匹配URL lab.before(async () => { nock('https://dev.azure.com') .get(centosAzureUri) .times(5) .reply(201, [ ... 如果我使用字符串,它就可以正常工作。一个例子如下: const centosAzureUri=`/${conf.org}/${conf.buildProject}/_api/build/builds?api version=

我正在尝试匹配URL

lab.before(async () => {
  nock('https://dev.azure.com')
    .get(centosAzureUri)
    .times(5)
    .reply(201, [
    ...
如果我使用字符串,它就可以正常工作。一个例子如下:

const centosAzureUri=`/${conf.org}/${conf.buildProject}/_api/build/builds?api version=4.1&branchName=${conf.buildBranch}`

但是,我希望使用以下正则表达式:

const centosAzureUri=new RegExp(`/${conf.org}/${conf.buildProject}/_api/build/builds?api version=4.1.*`,'g')
这是行不通的

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


我做错了什么?

我认为nock只使用regex-literal而不是regex-object,它将返回一个新对象。例如

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

请注意,RegExp只需要最高为“4.1”的模式即可执行匹配。如果匹配发生,字符串的其余部分将被忽略。例如:

const centosAzureUri = new RegExp(`/${conf.org}/${conf.buildProject}/_apis/build/builds?api-version=4.1`, 'g')
此外,您可能希望尝试转义,因为斜杠需要:

const centosAzureUri = new RegExp(`\/${conf.org}\/${conf.buildProject}\/_apis\/build\/builds?api-version=4.1`, 'g')

多谢各位。文字在工作。就我个人而言,我既没有看到任何书面的东西,也没有看到任何在
nock
代码中会阻止RegEx对象工作的东西。在此期间,我听从了你的建议。