Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js 如何在NODEJS中使用nock模拟内部服务器错误_Node.js_Unit Testing_Mocking_Nock - Fatal编程技术网

Node.js 如何在NODEJS中使用nock模拟内部服务器错误

Node.js 如何在NODEJS中使用nock模拟内部服务器错误,node.js,unit-testing,mocking,nock,Node.js,Unit Testing,Mocking,Nock,我正在使用Nock测试一个场景,其中我正在测试内部服务器错误(500)。当我运行代码时,它会抱怨“NOCK:No Match For Request” 下面是我的单元测试代码: it.only('should retry requests', function (done) { this.timeout(30000); nock('url') .put('query', RequestData) .reply(500, { msg: 'In

我正在使用Nock测试一个场景,其中我正在测试内部服务器错误(500)。当我运行代码时,它会抱怨“NOCK:No Match For Request”

下面是我的单元测试代码:

it.only('should retry requests', function (done) {
    this.timeout(30000);
    nock('url')
      .put('query', RequestData)
      .reply(500, {
        msg: 'Internal Server Error'
      });
    serviceAPI.putRequest(RequestURL, RequestData)
      .then(function () {
        done();
      })
      .catch(function (error) {
        expect(error.message).equal.to('Internal Server Error');
        nock.cleanAll();
        done();
      });
  });

**我没有使用请求模块来执行rest调用,而是使用来执行请求。

尝试不带参数的put,即
nock('url')。put()。回复(500,{msg:'内部服务器错误'})@kingdanastyk我试过了,但它现在起作用了。它仍然显示相同的错误。再次检查url,我不明白此测试用例如何帮助您。如果返回的状态代码为5xx eg 500,bcoz请求重试模块将重新发送请求。所以这个测试用例似乎毫无意义,您可以使用persist()和nock来拦截每个调用,但这将是一个无止境的循环。requestretry将继续发送请求,nock将继续使用500@kingdynastyk:在我的代码函数中,我有一个检查,它将记录最大尝试次数。因此,我希望requestretry调用“5”次,一旦它进行了最大尝试,就应该记录它进行了最大尝试并失败。我想测试一下这个特殊的条件。如果您在同一个单元测试中发送回复200,那么它不会抛出错误,但是如果我保留500作为回复,那么它只抛出错误。因此,URL是正确的尝试将persist()添加到nock中,如nock(URL).persist().put()。回复(500)尝试不带参数的put,即
nock('url')。put()。回复(500,{msg:'内部服务器错误'})@kingdanastyk我试过了,但它现在起作用了。它仍然显示相同的错误。再次检查url,我不明白此测试用例如何帮助您。如果返回的状态代码为5xx eg 500,bcoz请求重试模块将重新发送请求。所以这个测试用例似乎毫无意义,您可以使用persist()和nock来拦截每个调用,但这将是一个无止境的循环。requestretry将继续发送请求,nock将继续使用500@kingdynastyk:在我的代码函数中,我有一个检查,它将记录最大尝试次数。因此,我希望requestretry调用“5”次,一旦它进行了最大尝试,就应该记录它进行了最大尝试并失败。我想测试一下这个特殊的条件。如果您在同一个单元测试中发送回复200,那么它不会抛出错误,但是如果我保留500作为回复,那么它只抛出错误。因此,URL是正确的尝试将persist()添加到nock中,如nock(URL).persist().put()。答复(500)