The issue I have is that mocha-typescript keeps throwing an error that describe is not defined.
TypeError: mocha_typescript_1.describe is not a function
at DatabaseTest.WrongPath (test/database_test.ts:21:9)
at Context.<anonymous> (node_modules/mocha-typescript/index.ts:218:22)
My tsconfig.json
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "dist",
"sourceMap": true,
"lib": ["es6"],
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"typeRoots": [
"./node_modules/@types"
],
"types": [
"node", "mocha", "chai"
]
},
"include": [
"src/**/*.ts",
"test/**/*.ts"
],
"exclude": [
"node_modules"
]
}
My package.json
{
//omitted
"main": "App.js",
"scripts": {
"pretest": "tsc",
"test": "nyc mocha --require ts-node/register test/**/*_test.ts ",
"watch": "mocha-typescript-watch",
"prepare": "tsc"
},
// ommitted
"dependencies": {
"@types/chai": "^4.0.6",
"@types/jsesc": "^0.4.29",
"@types/mocha": "^2.2.44",
"@types/node": "^8.0.53",
"@types/sqlite3": "^3.1.1",
"chai": "^4.1.2",
"express": "^4.16.2",
"express-longpoll": "0.0.4",
"jsesc": "^2.5.1",
"mocha": "^4.0.1",
"mocha-typescript": "^1.1.12",
"nyc": "^11.3.0",
"reflect-metadata": "^0.1.10",
"sequelize": "^4.26.0",
"sequelize-typescript": "^0.6.1",
"source-map-support": "^0.5.0",
"sqlite3": "^3.1.13",
"ts-events": "^3.2.0",
"ts-node": "^3.3.0",
"typescript": "^2.6.2",
"typings": "^2.1.1"
}
}
database_test.ts:
//Unit testing script for Database.ts
/// <reference path="../node_modules/mocha-typescript/globals.d.ts" />
//// <reference path="../node_modules/@types/mocha/index.d.ts" />
import { suite, test, describe, slow, timeout } from "mocha-typescript"
import { assert } from "chai";
import 'mocha'
@suite(slow(1000), timeout(3000))
export class SampleTest {
@test testFunc(){
describe("Sample function", ()=>{
it("Should succeed without any problems", (done) => {
assert.isTrue(true);
done();
})
});
}
}
Full log:
> [email protected] pretest /home/user/folder/project
> tsc
> [email protected] test /home/user/folder/project
> nyc mocha --require ts-node/register test/**/*.ts
SampleTest
1) testFunc
0 passing (13ms)
1 failing
1) SampleTest
testFunc:
TypeError: mocha_typescript_1.describe is not a function
at DatabaseTest.WrongPath (test/database_test.ts:21:9)
at Context.<anonymous> (node_modules/mocha-typescript/index.ts:218:22)
----------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files | Unknown | Unknown | Unknown | Unknown | |
----------|----------|----------|----------|----------|----------------|
npm ERR! Test failed. See above for more details.
As you can see I've tried multiple things such as settings typeRoots and types in tsconfig.json, import mocha and two different type definiton files. None of them worked and I'm tangled up in all the possible combinations.
I've been trying to get typescript-mocha running for a while now and sometimes it works, sometimes it doesn't. A clear explanation I don't have, but I'd certainly like one.
Turns out the error is given because of a double keyword declaration.
Apparently import 'mocha' is enough to declare the describe keyword.
I simply had to adjust the import line from
import { suite, test, describe, slow, timeout } from "mocha-typescript"
to
import { suite, test, slow, timeout } from "mocha-typescript"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With