如何测试我的节点/快速应用正在进行API调用(通过axios)

时间:2018-08-14 09:26:52

标签: node.js express testing mocha chai

当用户访问我的应用程序的主页时,我的快速后端向外部API发出RESTful http请求,该请求返回JSON。

我想测试我的应用正在进行该API调用(实际上没有进行)。我目前正在与Chai在摩卡中进行测试,并且一直在使用Sinon和Supertest。

describe('Server path /', () => {
  describe('GET', () => {
    it('makes a call to API', async () => {
      // request is through Supertest, which makes the http request
      const response = await request(app)
        .get('/')

      // not sure how to test expect axios to have made an http request to the external API
    });
  });
});

我不在乎服务器给出的响应,我只想检查我的应用是否在使用正确的路径和标头(使用api键等)进行调用

2 个答案:

答案 0 :(得分:0)

也许您可以尝试检查从API响应返回的代码。但是从根本上检查代码是否执行API调用,您必须这样做。

答案 1 :(得分:0)

我过去在此情况下所做的工作是使用Sinon取消了服务器调用。假设您有一个服务器调用方法

// server.js
export function getDataFromServer() {
  // call server and return promise
}

在测试文件中

const sinon = require('Sinon');
const server = require('server.js'); // your server call file

describe('Server path /', () => {  
  before(() => { 
    const fakeResponse = [];
    sinon.stub(server, 'getDataFromServer').resolves(fakeResponse); // I assume your server call is promise func
  });

  after(() => {
    sinon.restore();
  });

  describe('GET', () => {
    it('makes a call to API', async () => {
      // request is through Supertest, which makes the http request
      const response = await request(app)
        .get('/')
      ...   
    });
  });
});

希望它可以为您提供见解。