Node.js 如何在NODEJS中使用nock模拟内部服务器错误
我正在使用Nock测试一个场景,其中我正在测试内部服务器错误(500)。当我运行代码时,它会抱怨“NOCK:No Match For Request” 下面是我的单元测试代码: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
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)