Отсутствие покрытия кода для тестов Fastify Integration с использованием NYC / Istanbul написано в Typescript - PullRequest
0 голосов
/ 18 марта 2020

В настоящее время я пытаюсь получить покрытие кода на моих маршрутах ускорения, используя Mocha и NY C.

Я пытался предварительно ввести код в код и затем запустить тесты для инструментированного кода, а также просто пытаюсь настроить NY C различными способами, чтобы заставить его работать правильно.

Вот моя текущая конфигурация. Все предыдущие выполнили одинаковый вывод покрытия кода):

ny c config

"nyc": {
  "extends": "@istanbuljs/nyc-config-typescript",
    "extension": [
        ".ts",
        ".tsx"
    ],
    "exclude": [
        "**/*.d.ts",
        "**/*.test.ts"
    ],
    "reporter": [
        "html",
        "text"      
    ],
    "sourceMap": true,
    "instrument": true
}

Файл маршрута:

const routes = async (app: FastifyInstance, options) => {

  app.post('/code', async (request: FastifyRequest, response: FastifyReply<ServerResponse>) => {
    // route logic in here
  });
};

Интеграционный тест:

import * as fastify from fastify;
import * as sinon from 'sinon';
import * as chai from 'chai';

const expect = chai.expect;
const sinonChai = require('sinon-chai');
chai.use(sinonChai);

describe('When/code POST is called', () => {
  let app;

  before(() => {
    app = fastify();

    // load routes for integration testing
    app.register(require('../path/to/code.ts'));
  });
  after(() => {
    app.close();
  });

  it('then a code is created and returned', async () => {
    const {statusCode} = await apiTester.inject({
      url: '/code',
      method: 'POST',
      payload:{ code: 'fake_code' }
    });
    expect(statusCode).to.equal(201);
  });
});

Мой вызов модульного теста выглядит следующим образом:

nyc mocha './test/unit/**/*.test.ts' --require ts-node/register --require source-map-support/register --recursive

Я буквально получаю 5% покрытия кода только для const routes =. Я действительно бьюсь головой, пытаясь понять это. Любая помощь будет принята с благодарностью! Ни одно из других решений, которые я исследовал здесь, не работает.

...