我正在使用tsyringe进行依赖项注入,并尝试运行单元测试。类在ts中,测试文件在js中。当我尝试通过执行TS_NODE_PROJECT="tsconfig.testing.json" mocha -r ts-node/register src/**/*.test.js
我得到以下编译错误:
repo.ts:27:14 - error TS1219: Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning.
这是我的密码。
// repo.ts
@injectable()
export class Repo {
testAdd = (a, b) => {
return a + b;
};
}
// repo.test.js
const { Repo } = require("../repo");
const expect = require("chai").expect;
describe("testing the add function", () => {
it("addition worked correctly", (done) => {
const r = new Repo();
const res = r.testAdd(4, 5);
expect(res).to.equal(9);
done();
});
});
// tsconfig.json
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"module": "commonjs",
"noImplicitReturns": false,
"noUnusedLocals": false,
"outDir": "lib",
"sourceMap": true,
"strict": false,
"target": "es2017"
},
"compileOnSave": true,
"include": ["src"]
}
// tsconfig.testing.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es6"
},
"include": ["**/*.spec.ts"]
}
如果我去掉了injectable()
装饰器,那么测试就可以工作了。如果我将测试文本从js改为ts,那么它就可以工作了。我尝试创建一个jsconfig.json并在中添加
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
但这无济于事。
我做错了什么?
更新,我认为问题是我需要添加
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
在tsconfig.testing.json文件中。到目前为止,似乎正在使用.js测试文件。