我正在尝试匹配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}
。
我做错了什么?
答案 0 :(得分:1)
我认为nock只使用regex文字和regex对象,它将返回一个新对象。例如。
nock('http://example.com')
.get(/harry\/[^\/]+$/)
.query({param1: 'value'})
.reply(200, "OK");
答案 1 :(得分:0)
请注意,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')
HTH!