Как охватить операторы внутри цикла в тестовом коэффициенте - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть функция, код написан ниже.Я использую lab в качестве инструмента покрытия кода.

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 : '' показана как не покрытая.Кроме того, в большинстве строк кода, где я использовал циклы или методы итератора, они показаны как не покрытые.Я задаюсь вопросом, как я должен покрыть это.ALS

1 Ответ

0 голосов
/ 21 сентября 2018

Ну, это как-то странно, у меня довольно много таких циклов, и в отчете о лабораторных испытаниях говорится, что они покрыты.

Вот мой код

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');
});

У меня есть много других сложных циклов в моем коде, и большинство из них покрыты тестом.Можно ли показать нам свой тестовый код, как вы проверяете свои условия?

...