使用 mocha.js 在 node.js 中测试外部 api 调用

testing external api calls in node.js using mocha.js

我正在尝试为我的 npm 模块编写测试,该模块负责与我的后端 api 进行通信。该模块将位于 cordova android 应用程序中,并将处理任何 api 调用。我遇到的问题似乎是对 mocha 的理解,但我在互联网上仔细看了看,找不到解决方案,所以我求助于大众。例如,我有一个函数

  test: function() {

    request.get({
      url: defaultHost,
      headers: {
      }
    }, function(err, httpResponse, body) {

      if(err) {
        return err;
      } else {
        console.log(body);
        return body;
      }
    });
  }

这个作品会。我现在正在尝试在 mocha 中为它创建测试。我遇到的问题是我不知道如何从 .get 调用 mocha 测试中获取 return 函数。 api returns json,所以我知道我将不得不进行相等比较,但目前我什至无法打印结果。我认为问题在于我可以开始工作的其他 mocha 测试,它们都有一个论点,即你在没有传递的地方传递。我当前的测试代码如下所示。

describe('#test', function() {
  it('tests api reachability;', function() {
    var test = new test();
  });
});

如果有人可以解释之后需要什么,甚至只是在 google 上为我指明正确的方向,那就太棒了。我通常很擅长google,但在这方面找不到方向。

我认为 nock will solve this issue. Let's assume you sending get request to some resource (http://domain.com/resource.json) 测试应该是这样的:

var nock   = require('nock');

// ... 

describe('#test', function() {
  beforeEach(function () {
    nock('http://domain.com')
      .get('resource.json')
      .reply(200, {
        message: 'some message'
      });
  });

  it('tests api reachability;', function() {
    var test = new test();
  });
});