运行supertest fetch';Heroku的测试

运行supertest fetch';Heroku的测试,heroku,supertest,Heroku,Supertest,我们希望在每次发布之前在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: Se

我们希望在每次发布之前在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: 
remote:src/controller/user.spec.ts失败(5.506s)
遥控器:用户控制器
远程:✕ GET/用户应返回200(48毫秒)
远程:
远程:● 用户控制器›获取/用户应返回200
远程:
远程:获取错误:请求到https://localhost/users 失败,原因:connect ECONREFUSSED 127.0.0.1:443
远程:
远程:在ClientRequest。(node_modules/node fetch/lib/index.js:1345:11)
远程:

我不知道为什么supertest fetch会请求https,即使它请求http,我认为Heroku也不允许使用任意端口。有人在Heroku上成功运行了supertest的测试吗?

现在,super fetch正在向
localhost:443
发出请求(这可能是在您的
fetch函数
makefetch
文件中配置的),在Heroku环境中不起作用。如果您知道要测试的服务的公开dns目标,可以将其添加到配置中。或者,如果您想更具动态性,您可以使用它来组合一个有效的公共url