如何使用Nock.js对POST请求进行正则路径匹配?
Nock中POST请求的正则路径匹配实现及写法验证
你的这段写法不完全正确,问题出在路径的正则匹配方式上。
Nock里要实现正则路径匹配,不能用字符串形式的'/v1/secrets/*$'——这种写法会被当作普通字符串路径来匹配,而非正则表达式。正确的姿势是直接传入RegExp正则对象。
正确的POST正则匹配写法
nock('https://base-url.com') .post(/^\/v1\/secrets\/.*$/, { username: 'pgte', email: 'pedro.teixeira@gmail.com', }) .reply(200);
细节说明
- 正则
/^\/v1\/secrets\/.*$/会匹配所有以/v1/secrets/开头的子路径,比如/v1/secrets/123、/v1/secrets/user-token这类都能命中 - 如果需要更精准的匹配规则,可以调整正则:比如只匹配数字结尾的路径,用
/^\/v1\/secrets\/\d+$/即可
链式处理多个请求
如果要链式匹配多个不同请求,直接在同一个nock实例后链式调用请求方法就行,比如同时匹配POST和GET请求:
nock('https://base-url.com') // 匹配符合规则的POST请求 .post(/^\/v1\/secrets\/.*$/, { username: 'pgte', email: 'pedro.teixeira@gmail.com', }) .reply(200, { code: 0, msg: 'secret saved' }) // 匹配符合规则的GET请求 .get(/^\/v1\/users\/\d+$/) .reply(200, { id: 123, username: 'pgte' });
内容的提问来源于stack exchange,提问作者Boris K
相关产品推荐
相关产品推荐

