[英]How to run my fixtures for mocha using TypeScript?
使用 ExpressJS、TypeScript 和 Mocha,我希望能够在每次测试后关闭我的服务器连接。
我知道我可以在每个测试文件上做这样的事情
this.afterAll(function () {
server.close();
});
但这会导致我的代码重复很多,我想做得更干净一点,所以我阅读了 Mocha 文档并找到了有关全局固定装置的信息。 我使用以下语法创建了一个名为“fixtures.ts”的文件:
import { app, server } from '../../../app';
export const mochaHooks = (): Mocha.RootHookObject => {
return {
afterAll(done: Mocha.Done) {
console.log('Closing server');
server.close();
done();
},
};
};
使用它,我希望能够在测试结束后关闭我的服务器。 我的问题是 fixtures.ts 在运行我的测试时根本没有做任何事情。 我在 package.json 上的语法是这样的:
"scripts": {
"build": "npx tsc",
"start": "node build/app.js",
"dev": "concurrently \"npx tsc --watch\" \"nodemon -q build/app.js\"",
"test": "mocha --require ts-node/register 'test/{controllers,services}/*.ts' 'test/utils/server/fixtures.ts'",
"preseed": "npm run build",
"seed": "node build/test/utils/seeders/seeds.js"
},
在 mocha 文档中,全局夹具使用的文件扩展名类似于“mjs”或“cjs”,这在使用 TypeScript 时会不会有问题?
最后,这只是我的 package.json 的错字问题。 我最终在文件名后使用 --require 修复了它。 ts-node 完成使用全局夹具的工作。
"scripts": {
"build": "npx tsc",
"start": "node build/app.js",
"dev": "concurrently \"npx tsc --watch\" \"nodemon -q build/app.js\"",
"test": "mocha --require ts-node/register --require 'test/utils/server/fixtures.ts' 'test/{controllers,services}/*.ts' ",
"seed": "node --require ts-node/register test/utils/seeders/seeds.ts"
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.