0

我有一个函数,代码写在下面。我正在使用实验室作为代码覆盖工具。

getClients = async (partnerId) => {
    try {
      const results = await PartnersClients.findAll({
        attributes: ['clientId'],
        where: {
          partnerId,
        },
        include: [{
          model: Models.Entries,
          attributes: ['section'],
        }],
      });
      if (!results.length) return false;
      return results.map(result => ({
        clientId: result.dataValues.clientId,
        section: result.dataValues.Entries.length ? result.dataValues.Entries[0].dataValues.section : '',
      }));
    } catch (error) {
      return false;
    }
  };

我已经为它编写了测试,但这条线section: result.dataValues.Entries.length ? result.dataValues.Entries[0].dataValues.section : ''显示为未涵盖。此外,在我使用循环或迭代器方法的大多数代码行上,都显示为未涵盖。我想知道我应该如何覆盖它。也

4

1 回答 1

0

嗯,这有点奇怪,我有很多这样的循环,实验室测试报告说它们都被覆盖了。

这是我的代码

handler: async (request, h) => {
    try {        
        const results = await Content.find(contentFilters).sort({createdAt: -1})        
            .exec();
        const {simpleResults} = request.query;
        const contentList = results.results.map(row => simpleResults ? row.simpleApiData() : row.apiData());        
        return {
            status: true,
            results: contentList,
        }
    } catch (e) {
        /* $lab:coverage:off$ */
        request.server.log(['error', 'content', 'list'], e);

        return Boom.badRequest(e.message, e);
        /* $lab:coverage:on$ */
    }
}

这是涵盖所有行的测试代码。

it('It should list contents', async () => {
    const res = await server.inject({
        url: `/content?${key}=${filters[key]}&page=1`, // I also have another test with additional "simpleResults" parameter added to this url, query parameters validated by Joi ofc. simpleResults: Joi.boolean(),
        method: 'get',
        headers: {
            "Authorization": token
        }
    });

    expect(res.statusCode).to.equal(200);
    expect(res.result.status).to.equal(true);
    expect(res.result.results).to.be.an.array();
    expect(res.result.results).to.have.length(1);
    expect(res.result.results[0].title).to.equal('Game Of Thrones');
});

我的代码中有许多其他复杂的循环,其中大部分都包含在测试中。是否可以向我们展示您的测试代码,您如何测试您的条件?

于 2018-09-21T20:30:37.253 回答