Выполнение теста супертест-фетча на Heroku - PullRequest
0 голосов
/ 03 ноября 2018

Мы хотели бы запускать тесты supertest-fetch на Heroku перед каждым выпуском.

Пример теста:

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);
    });
});

PROCFILE:

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?

1 Ответ

0 голосов
/ 09 ноября 2018

Прямо сейчас super-fetch делает запрос к localhost:443 (это, вероятно, настроено в вашем файле FetchFunction или makeFectch), который не будет работать в вашей среде Heroku. Если вы знаете общедоступную цель DNS для службы, которую вы хотите протестировать, вы можете добавить ее в свою конфигурацию. В качестве альтернативы, если вы хотите быть более динамичным, вы можете использовать метаданные dyno , чтобы собрать действительный и общедоступный URL.

...