问题描述
我开始了解集成测试,并想在我的 expressjs 应用中测试我的所有控制器。
所以我有 Controller1、Controller2 和 Controller3。
我想为分别命名为“Controller1.integration.test.ts”、“Controller2.integration.test.ts”等的集成字段创建 3 个单独的文件...
我无法实现的是在所有测试中维护单个服务器。
import { before } from 'mocha';
import request from 'supertest';
import * as server from "../../Server";
let app:any;
describe('GET /api/home',function() {
before(async () => {
app = await server.startRestServer();
})
it('returns 200',function(done) {
request(app)
.get('/api/home3')
.expect(200,done);
});
it('returns 302',function(done) {
request(app)
.get('/api/home2')
.expect(302,done);
});
});
但我不知道我怎么可能在其他集成测试文件中使用 app
变量?
如果我将此模式应用于不同的文件,很明显,会出现一个错误,告诉我某些东西已经在我的端口上侦听。
所以我的问题是:我应该如何处理更大项目的多个集成测试?
我正在考虑将部分测试注入主文件并立即运行所有内容,但我不确定这是否是一个好的做法。
类似于:
import { before } from 'mocha';
import request from 'supertest';
import * as server from "../../Server";
let app:any;
describe('integration tests',function() {
before(async () => {
app = await server.startRestServer();
})
require('./test1.integration.test.ts')();
require('./test2.integration.test.ts')();
require('./test3.integration.test.ts')();
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)