如何模拟 node-rest-client 请求?
How can I Mock node-rest-client request?
我正在为我的项目使用 node-rest-client,我已经到了要开始单元测试我的 类 的地步,它在我的单元测试中使用了 node-rest-client. Is there any examples on how I can mock the Client in my tests? I am using Sinon。
第 1 步:在您正在测试的 js 代码中,导出 node-rest-client 实例,以便您的测试代码可以使用它。例如在myApp.js,我把这个:
var Client = require('node-rest-client').Client;
var restClient = new Client();
exports.restClient = restClient; //instance now available outside this module
restClient.get(someUrl, ...); //actual node rest client call
第 2 步:在您的测试代码中,创建一个 return 伪函数的包装函数,并使用 sinon 将其模拟到您的目标代码中。这允许您在测试设置期间注入 return 数据和响应代码。
var nodeRestGet = function (data, statusCode) {
return function (url, cb) {
cb(data, { statusCode: statusCode || 200 });
}
};
sinon.stub(myApp.restClient, 'get').callsFake(nodeRestGet("", 200));
第 3 步:编写测试代码。请注意,如果您 运行 多个测试,您可能想要恢复该方法(删除模拟):
myApp.doThings(); // TEST
myApp.restClient.get.restore(); // removes the mock
我正在为我的项目使用 node-rest-client,我已经到了要开始单元测试我的 类 的地步,它在我的单元测试中使用了 node-rest-client. Is there any examples on how I can mock the Client in my tests? I am using Sinon。
第 1 步:在您正在测试的 js 代码中,导出 node-rest-client 实例,以便您的测试代码可以使用它。例如在myApp.js,我把这个:
var Client = require('node-rest-client').Client;
var restClient = new Client();
exports.restClient = restClient; //instance now available outside this module
restClient.get(someUrl, ...); //actual node rest client call
第 2 步:在您的测试代码中,创建一个 return 伪函数的包装函数,并使用 sinon 将其模拟到您的目标代码中。这允许您在测试设置期间注入 return 数据和响应代码。
var nodeRestGet = function (data, statusCode) {
return function (url, cb) {
cb(data, { statusCode: statusCode || 200 });
}
};
sinon.stub(myApp.restClient, 'get').callsFake(nodeRestGet("", 200));
第 3 步:编写测试代码。请注意,如果您 运行 多个测试,您可能想要恢复该方法(删除模拟):
myApp.doThings(); // TEST
myApp.restClient.get.restore(); // removes the mock