Тестирование базы данных Postgre на Heroku

1

В настоящее время я создаю API с Swagger на Heroku, и я хотел бы попробовать, если конечные точки создадут правильные записи в базе данных Postgre. Однако, как только я попытаюсь подключиться к Heroku Postgre в моем тестировании, соединение будет отклонено. Я думаю, что это связано с тем, что в непрерывной интеграции enkirnge heroku создает песочницу и не принимает связи с реальными dbs.

Я попытался создать резервную базу данных, как предлагается здесь: https://devcenter.heroku.com/articles/heroku-postgres-backups, но я не смог найти доступ к этой информации!

Любая помощь приветствуется!

Спасибо.

Вот мой тест кода:

'use strict';

var should = require('should');
var request = require('supertest');
var assert = require('assert');
var server = require('../../../app');

var pg = require('pg');
var knex = require('knex')({
  client: 'postgresql',
  connection: process.env.DATABASE_URL

});

describe('controllers', function () {
  describe('testing cenas', function () {
     it('test1', function (done) {

      request(server)
        .get('/hello')
        .set('Accept', 'application/json')
        .expect('Content-Type', /json/)
        .expect(200)
        .end(function (err, res) {

          assert.equal(res.body, 'Hello,Hugo Pereira!');
          done();
        });
    });


  });
});

это дает ошибку:

Unhandled rejection Error: Unable to acquire a connection
    at Client_PG.acquireConnection (/app/node_modules/knex/lib/client.js:332:40)
    at Runner.ensureConnection (/app/node_modules/knex/lib/runner.js:233:24)
    at Runner.run (/app/node_modules/knex/lib/runner.js:47:42)
    at Builder.Target.then (/app/node_modules/knex/lib/interface.js:39:43)
    at testPg (/app/api/controllers/hello_world.js:27:44)
    at swaggerRouter (/app/node_modules/swagger-tools/middleware/swagger-router.js:407:20)
    at swagger_router (/app/node_modules/swagger-node-runner/fittings/swagger_router.js:31:5)
    at Runner.<anonymous> (/app/node_modules/bagpipes/lib/bagpipes.js:171:7)
    at bound (domain.js:301:14)
    at Runner.runBound (domain.js:314:12)
    at Runner.pipeline (/app/node_modules/pipeworks/pipeworks.js:72:17)
    at Runner.flow (/app/node_modules/pipeworks/pipeworks.js:223:19)
    at Pipeworks.flow (/app/node_modules/pipeworks/pipeworks.js:135:17)
    at Pipeworks.siphon (/app/node_modules/pipeworks/pipeworks.js:186:19)
    at Runner.<anonymous> (/app/node_modules/bagpipes/lib/bagpipes.js:98:22)
    at bound (domain.js:301:14)
  0 passing (2s)
  • 0
    оказывается, это была моя ошибка, вам нужно определить ваш process.env.DATABASE_URL в вашей тестовой среде
Теги:
mocha
heroku

3 ответа

0
Лучший ответ

Мне удается решить эту проблему, используя базу данных heroku in-dyno (https://devcenter.heroku.com/articles/heroku-ci-in-dyno-databases). Как только я получил базу данных, я перехожу к конечной точке в моей среде разработки, которую я сделал сам, которая дает мне файл дампа схем моей реальной базы данных. В тестовой среде я импортирую этот файл и вуаля, у меня есть все схемы и таблицы, необходимые для моей тестовой среды.

0

Если вы используете URL-адрес postgres heroku, то для внешнего доступа требуется одна строка запроса ?ssl=true добавленный к URL-адресу

например

"DATABASE_URL" : "postgres://user:[email protected]:5432/dbid?ssl=true"
0

Команда heroku pg:psql должна подключаться к вашей базе данных. Вы также можете передать его параметры для подключения к альтернативным/резервным базам данных.

  • 0
    Можно ли использовать эту команду для подключения через код?
  • 0
    У них есть документация об этом: devcenter.heroku.com/articles/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню