我正在为我的项目使用 node-rest-client ,并且我已经到了要开始对使用node-rest-client 的类进行单元测试的地步。有没有关于如何在测试中模拟客户端的示例?我在单元测试中使用了Sinon。
问问题
1058 次
1 回答
3
第 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 步:在您的测试代码中,创建一个返回假函数的包装函数,并使用 sinon 将其模拟到您的目标代码中。这允许您在测试设置期间注入返回数据和响应代码。
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
于 2017-05-09T15:57:48.193 回答