J'essaie d'écrire des tests dans TypeScript (ES6) à l'aide de WebStorm IDE. Par exemple.:
// Imports...
describe('Message', () => {
const server = express();
server.use(bodyParser.json());
const messageService = { findAll: () => ['test'] };
beforeAll(async () => {
const module = await Test.createTestingModule({
modules: [MessageModule],
})...
});
// Tests...
});
Cependant WebStorm IDE affiche l'erreur suivante à async () =>
TS2705: Une fonction ou méthode asynchrone dans ES5/ES3 nécessite la promesse constructeur. Assurez-vous d'avoir une déclaration pour la promesse constructeur ou incluez ES2015 dans votre option --lib.
Mon tsconfig.json
:
{
"compilerOptions": {
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"allowJs": true,
"outDir": "./dist"
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
Je lis ts Une fonction ou méthode asynchrone dans ES5/ES3 nécessite le constructeur "Promise"
"lib": [ "es2015" ]
cependant, cela n'a aucun effet. Des idées ce qui ne va pas?
Ajouter
"lib": [ "es2015" ]
to tsconfig.json devrait corriger le problème . Cependant, il semble que vos fichiers de spécifications ne soient pas inclus dans votre tsconfig.json (vérifiez les valeurs "include":[]
et "exclude":[]
). Donc, le service TypeScript doit utiliser un tsconfig.json différent pour vos fichiers (peut être un par défaut, si aucun fichier tsconfig.json contenant vos spécifications ne peut être trouvé) problème, assurez-vous de spécifier la propriété lib
dans config utilisée pour le traitement de vos fichiers de spécifications
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"allowSyntheticDefaultImports": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./src",
"lib": ["es2015"]
},
"include": [
"src/**/*",
"**/*.spec.ts"
],
"exclude": [
"node_modules"
]
}
l'ajout de "lib":["es2015"]
à "compilerOptions"
conformément à la réponse de @ lena et la suppression de **/*.spec.ts
de "exclude":[]
et l'ajout à "include":[]
l'ont résolu pour moi.