Не удается запустить тесты TypeORM - PullRequest
1 голос
/ 11 июля 2020

Пытаюсь запустить тесты TypeORM локально. Я использую изображения Docker для запуска всех баз данных, просто запустив:

docker-compose up

Я скопировал ormconfig.json.dist в ormconfig.json, а затем запустил:

npm run compile ; npm run test

Он вылетает с этой ошибкой:

> npm run compile ; npm run test

> typeorm@0.2.25 compile C:\Users\pupeno\Documents\Flexpoint Tech\js\typeorm
> rimraf ./build && tsc


> typeorm@0.2.25 test C:\Users\pupeno\Documents\Flexpoint Tech\js\typeorm
> rimraf ./build && tsc && mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test



  √ github issues > #3158 Cannot run sync a second time (475ms)
  √ github issues > #3588 Migration:generate issue with onUpdate using mysql 8.0 (116ms)
  benchmark > bulk-save > case1
connecting
    1) "before all" hook for "testing bulk save of 10.000 objects"
    2) "after all" hook for "testing bulk save of 10.000 objects"


  2 passing (1m)
  2 failing

  1) benchmark > bulk-save > case1
       "before all" hook for "testing bulk save of 10.000 objects":
     Error: Timeout of 60000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (C:\Users\pupeno\Documents\Flexpoint Tech\js\typeorm\build\compiled\test\benchmark\bulk-save-case1\bulk-save-case1.js)
      at listOnTimeout (internal/timers.js:551:17)
      at processTimers (internal/timers.js:494:7)

  2) benchmark > bulk-save > case1
       "after all" hook for "testing bulk save of 10.000 objects":
     TypeError: Cannot read property 'map' of undefined
      at Object.closeTestingConnections (test\utils\test-utils.ts:285:36)
      at Context.<anonymous> (test\benchmark\bulk-save-case1\bulk-save-case1.ts:16:17)
      at processImmediate (internal/timers.js:458:21)



npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! typeorm@0.2.25 test: `rimraf ./build && tsc && mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the typeorm@0.2.25 test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\pupeno\scoop\persist\nodejs\cache\_logs\2020-07-11T09_15_28_115Z-debug.log

Пытаясь отладить, что происходит, насколько я вижу, время ожидания истекает при подключении к базе данных PostgreSQL, но другие базы данных, похоже, работают и подключаются с моим клиентом PSQL (DataGrip) с теми же учетными данными, что и в ormconfig.json, также работает.

Еще одна вещь, которую я пробовал, - это не запускать изображение docker, а запускать свой собственный локальный PostgreSQL, устанавливая загрузите пользователя и базу данных с правильными учетными данными и попытайтесь запустить тесты. Та же ошибка.

Я создаю приложение, которое использует TypeORM и успешно подключается к тому же PostgreSQL. Их тесты кажутся успешными: https://app.circleci.com/pipelines/github/typeorm/typeorm/1319/workflows/cf7bf4d0-5c6f-485f-803b-64eff385676b/jobs/2012

Есть идеи, что еще попробовать или что может происходить?

1 Ответ

0 голосов
/ 31 июля 2020

Я немного покопался,

Эти тесты выполняются для всех движков баз данных, если вас не интересуют другие тесты, кроме PostgreSQL, тогда установите флаг skip в ormconfig.json для других движков.

В других случаях вам необходимо решить проблемы для других dbs:

Я обнаружил, что одна из причин проблемы заключается в том, что MariaDB запрещает подключения из внешних сетей, поэтому, если контейнер работает в сети composer к нему невозможно подключиться из хост-сети (в которой вы запускаете npm test). Чтобы преодолеть это:

  1. Start docker - составьте с именованным проектом (это даст имя для сети :) docker-compose -p test up -d
  2. Выполните SQL, что позволит root для подключения с любого хоста: docker-compose -p test run --rm mariadb mysql -hmariadb -uroot -padmin -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'.%' IDENTIFIED BY 'admin' WITH GRANT OPTION;\nFLUSH PRIVILEGES;"

После этого передается npm run test для mariaDB.

контейнер MariaDB документы упоминание MYSQL_ROOT_HOST который должен выполнять ту же работу, но по неизвестной причине он не работает.

Не забудьте использовать down с именем проекта: docker-compose -p test down

Также я обнаружил, что ormconfig.json утверждает, что тест для базы данных SAP не пропускаются, но механизм базы данных SAP не включен в docker-compose.yml

...