mocha.js - nyc mocha visar okänd(0%) kodtäckning med type:module i package.json för TypeScript
Jag har använt typmodul för mitt projekt i package.json-filen. Nu när jag lade till testet med mocha och försöker hitta kodtäckningen med nyc visar det okänd 0% täckning för min TypeScript-fil.
Jag har alla filer med .ts-tillägg. Min package.json-fil ser ut som
"name": "temp-node",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"build": "tsc",
"start": "node dist/src/index.js",
"test": "nyc mocha --require ts-node/register dist/test-test/add.test.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@types/node": "^20.5.7",
"chai": "^4.3.8",
"mocha": "^10.2.0",
"nyc": "^15.1.0",
"sinon": "^15.2.0",
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
},
"nyc": {
"extends": "@istanbuljs/nyc-config-typescript",
"check-coverage": true,
"all": true,
"include": [
"src-test/**/*.ts"
],
"exclude": [
"test-test/**/*.ts"
],
"reporter": [
"html",
"lcov",
"text",
"text-summary"
],
"report-dir": "coverage"
}
}
Och tsconfig-filen är:
{
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext",
"esModuleInterop": true,
"target": "ESNext",
"sourceMap": true,
"outDir": "dist",
"rootDirs": ["src-test", "test-test"],
"baseUrl": "src-test",
"paths": {
"*": ["src-test/*"]
}
},
"include": [
"src-test/**/*",
"test-test/*"
],
"exclude": [
"node_modules",
"dist"
]
}
Testfil ser ut så här:
// test/test_math.js
import { add, subtract } from '../src-test/math.js'
import { multiply, divide } from '../src-test/utils/util.js'
import { expect } from 'chai';
import { describe, it } from 'node:test';
describe('Math operations', () => {
it('should add two numbers', () => {
expect(add(2, 3)).to.equal(5);
});
it('should subtract two numbers', () => {
expect(subtract(5, 3)).to.equal(2);
});
it('should multiply two numbers', () => {
expect(multiply(2, 3)).to.equal(6);
});
it('should divide two numbers', () => {
expect(divide(6, 3)).to.equal(2);
});
});
Nu när jag kör npm test visas utskriften som:
Statements : 0% ( 0/8 )
Branches : 100% ( 0/0 )
Functions : 0% ( 0/4 )
Lines : 0% ( 0/8 )
Jag tror att jag kan ha felkonfigurerat tsconfig eller att det är ett problem med NYC att det inte fungerar så här med TypeScript och att någon annan konfiguration behövs för att köra NYC och få kodtäckningen för TypeScript-koden.
Ett försök var framgångsrikt:
- Jag tog precis bort type:module från package.json-filen
- ta bort tilläggen (.js) från testfilerna.
- testkommandot är "test": "nyc mocha --require ts-node/register test-test/add.test.ts" I detta scenario fungerar det som förväntat och ger 100 % kodtäckning. Men koden jag har gett är dummy-kod och den ges för bättre förståelse, men i min faktiska app kan jag inte ta bort type från package.json. Så min förväntning är att jag vill ha någon lösning med type:module i package.json.