javascript - 如何对以 res.send(200, object) 结尾的 javascript 函数进行单元测试

标签 javascript unit-testing asynchronous

我正在尝试对以下函数 getAllPeopleFromDB 进行单元测试:

export const getAllPeopleFromDB = async (req, res) => {
  const people = await getAllAustralianPeopleFromDB();
  res.send(200, people);
};

问题是,我不知道如何处理最后的 res.send(200, people) 。

这是我的尝试(这可能有用,也可能没用):

  // datastoreService.getAllAustralianPeopleFromDB = jest.fn().mockImplementation(() => (
  //   new Promise(resolve => resolve('stub'))
  // ));

  // describe('getAllPeopleFromDB', () => {
  //   test('that body contains people and has 200 status', (done) => {
  //     req = {};
  //     res = {};

  //     getAllPeopleFromDB(req, res).then((response) => {
  //       expect(response).toContain(['stub', 200]);
  //       done();
  //     });
  //   });
  // });

最佳答案

您可以定义.send res上的方法对象,它接受数据参数(正在发送的数据)并存储它,以便可以检查其值。您的测试代码当前检查传递给.then()的数据。 ,这将是 undefined ,自 getAllPeopleFromDB不解析值。

尝试:

describe('getAllPeopleFromDB', () => {
    test('that body contains people and has 200 status', (done) => {

        let responseData = ''
        const req = {};
        const res = {send: function(status, data) {responseData = data}};

        getAllPeopleFromDB(req, res).then(() => {
          expect(responseData).toContain('whatever');
          done();
        });
    });
});

关于javascript - 如何对以 res.send(200, object) 结尾的 javascript 函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47171301/

相关文章:

javascript - 纯 JS 仅向其中一个重复元素添加类

python - Django/Python 单元测试 : Let exceptions rise

c++ - 当 std::future 准备好被检索时向主线程发送信号

javascript - Safari 中的黑框而不是图像

javascript - 在 Ajax 调用中获取解析器错误

javascript - 将 asar 包中的打包 JS 文件传递​​给生成的 Node 子进程

java - 线程安全单元测试

unit-testing - 如何正确测试将 Mongoose 查询作为 Promise 返回的函数

c# - AsyncWaitHandle.WaitOne 会阻塞 CLR 线程吗?或者它是否创建一个 I/O 完成端口?

c# - 立即等待和稍后等待的区别