【发布时间】:2018-11-03 15:08:28
【问题描述】:
我们希望在每次发布之前在 Heroku 上运行 supertest-fetch 的测试。
示例测试:
import {FetchFunction, makeFetch} from 'supertest-fetch';
import {koa} from '../koa';
import {Server} from 'http';
describe('User controller', () => {
let fetch: FetchFunction;
let server: Server;
beforeAll(() => {
server = koa.listen(3101);
fetch = makeFetch(server);
});
afterAll(() => {
server.close();
});
it('GET /users should return 200', async () => {
const response = await fetch('/users');
expect(response.status).toEqual(200);
});
});
过程文件:
release: npm test && node db-tools/apply-migrations.js
在 Heroku 上运行该测试失败
remote: FAIL src/controller/user.spec.ts (5.506s)
remote: User controller
remote: ✕ GET /users should return 200 (48ms)
remote:
remote: ● User controller › GET /users should return 200
remote:
remote: FetchError: request to https://localhost/users failed, reason: connect ECONNREFUSED 127.0.0.1:443
remote:
remote: at ClientRequest.<anonymous> (node_modules/node-fetch/lib/index.js:1345:11)
remote:
我不知道为什么 supertest-fetch 请求 https,即使它请求 http,我认为 Heroku 不允许任意端口提供服务。有人成功在 Heroku 上运行 supertest 的测试吗?
【问题讨论】: