0

我正在为我的项目使用 node-rest-client ,并且我已经到了要开始对使用node-rest-client 的类进行单元测试的地步。有没有关于如何在测试中模拟客户端的示例?我在单元测试中使用了Sinon

4

1 回答 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 回答