Javascript nock测试的正则表达式匹配失败
我正在尝试匹配URLJavascript 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=
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对象工作的东西。在此期间,我听从了你的建议。