诺克:请求不匹配

时间:2017-12-01 06:07:39

标签: node.js mocha nock

我的nock电话如下所示

app_url='myshop.app.com'
result = nock(app_url, {
            reqheaders: {
                 "content-type": "application/json",
                 'authorization': 'Basic Auth'
            }
          })
        .get('/admin/products.json?collection_id=10001&limit=250&fields=id')    
        .reply(200, {
                "products": [
                { "id": 101},
                {"id": 102},
            ]
        });

解决:

(node:1378) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Nock: No match for request { .  

但是现在,

========== =============更新

我已经更新了我的电话,这不会引发错误,但现在它没有拦截请求....它仍然是shopify获取数据

3 个答案:

答案 0 :(得分:2)

只需在范围{allowUnmocked:true}中添加标志

nock('https://host.com', { allowUnmocked: true })
    .post(`/path`)
    .reply(200, {answer: "any"});

答案 1 :(得分:1)

如果找不到与匹配的URL匹配的nock,则会发生这种情况。 被击中的网址是

  

https://myshop.app.com/admin/products.json?collection_id=201&limit=10&fields=id

如错误消息中所示。 您要锁定的网址与之对应。

这样的事情应该有效。

app_url = "https://myshop.app.com/"
result = nock(app_url, {
        reqheaders: {
            "content-type": "application/json",
        }
    })
    .get('/admin/products.json?collection_id=201&limit=10&fields=id').
    .reply(200, {
        "products": [{
            "id": 101
        }, {
            "id": 102
        }, ]
    });

有关确切方法的详细信息,请参阅Nock Documentation

答案 2 :(得分:0)

带标记的URL必须与Node所执行的URL完全相同,以避免出现“ Nock:请求不匹配”错误。因此,您所需要做的就是:

nock('https://host.com', { allowUnmocked: true })
 .log(console.log) // log the mocked URL so that you will know if they're 
                   // the same
 .post(`/path`)
 .reply(200, {answer: "any"});