Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试异步调用以便伊斯坦布尔能够涵盖它?_Javascript_Unit Testing_Mocha.js_Istanbul_Nyc - Fatal编程技术网

Javascript 如何测试异步调用以便伊斯坦布尔能够涵盖它?

Javascript 如何测试异步调用以便伊斯坦布尔能够涵盖它?,javascript,unit-testing,mocha.js,istanbul,nyc,Javascript,Unit Testing,Mocha.js,Istanbul,Nyc,我正在测试单元测试我的API。在我编写了所有测试之后,我实现了覆盖工具伊斯坦布尔。它涵盖了除分支机构以外的所有问题。在看过报告后,我发现异步调用并没有经过测试,但实际上它们至少运行了5次。在这种情况下,async运行了15次 我的测试的一个小例子: describe('GET /tables', () => { it('should GET tables', (done) => { chai.request(server) .get('/api/v1/tabl

我正在测试单元测试我的API。在我编写了所有测试之后,我实现了覆盖工具
伊斯坦布尔
。它涵盖了除分支机构以外的所有问题。在看过报告后,我发现异步调用并没有经过测试,但实际上它们至少运行了5次。在这种情况下,
async
运行了15次

我的测试的一个小例子:

describe('GET /tables', () => {
  it('should GET tables', (done) => {
    chai.request(server)
      .get('/api/v1/tables')
      .then((res) => {
        expect(res).to.have.status(200);
        expect(res.body).to.be.a('array');
        done();
      })
      .catch((err) => {
        done(err)
      })
  });
})
该测试的部分覆盖率报告:

export default async (req, res) => {
  let tables = [];
  try {
    tables = await Tables.findAndCountAll({
      where: {
        ...req.filter,
        material: null
      },
      // order: sort ? sort : [],
      limit: req.pagination.limit, 
      offset: req.pagination.offset
    });
  } catch (err) {
    console.log(err);
    return res.status(500).send({ error: 'Internal server error' });
  }

第1行:标记
async(r
并说branch not covered

修复了它。据我所知,当nyc获得传输代码的覆盖率时,它无法将其映射回原始源代码,因此当这种情况发生时,nyc会放弃覆盖率。Plugin
babel Plugin istanbul
修复了这一问题。它提供了对ES2015+代码的支持,因此它可以使用babel向后兼容。我遵循这个简单的原则