В настоящее время я пытаюсь получить покрытие кода на моих маршрутах ускорения, используя 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 =
. Я действительно бьюсь головой, пытаясь понять это. Любая помощь будет принята с благодарностью! Ни одно из других решений, которые я исследовал здесь, не работает.