Sequelize киосков мокко - PullRequest
       7

Sequelize киосков мокко

0 голосов
/ 31 октября 2018

Я пытаюсь проверить мои маршруты и мои контроллеры. Вот демонстрационный тест, который я написал, чтобы увидеть, все ли работает правильно.

import chai from "chai";
import chaiHttp from "chai-http";
import chaiAsPromised from "chai-as-promised";
import sinon from "sinon";
import sinonChai from "sinon-chai";
import wtfnode from "wtfnode";
import UserRepo from "../repositories/userRepository";
import server, { stopServer } from "../app";
import db from "../models/index";

wtfnode.init();

chai.use(chaiHttp);
chai.use(chaiAsPromised);
chai.use(sinonChai);
chai.should();

describe("TEST", () => {
  describe("Happy Path", () => {
    before(() => {
      sinon.stub(UserRepo, "getUsers");
      const users = [
        { id: 1, first_name: "test", last_name: "test" },
        { id: 2, first_name: "test", last_name: "test" },
        { id: 3, first_name: "test", last_name: "test" },
        { id: 4, first_name: "test", last_name: "test" },
        { id: 5, first_name: "test", last_name: "test" }
      ];
      UserRepo.getUsers.returns(users);
    });
    it("Retrieves users from the database and renders an index page displaying all the users", done => {
      chai
        .request(server)
        .get("/admins/users")
        .end((err, res) => {
          res.should.have.status(200);
          UserRepo.getUsers.should.have.been.calledOnce;
          done();
        });
    });
    after(() => {
      UserRepo.getUsers.restore();
      stopServer();
      db.sequelize.close();
      wtfnode.dump();
    });
  });
});

А фрагмент ниже показывает, как я экспортирую сервер в моем "app.js"

const server = app.listen(port, () => {
  /* eslint-disable no-console */
  console.log(`App Running on port ${port}`);
  /* eslint-enable no-console */
});

export const stopServer = () => {
  console.log("Shutting the server");
  server.close();
};

export default server;

Хотя я пытаюсь выключить сервер и закрыть соединение с базой данных, mocha не завершает работу правильно

Итак, я включил wtfnode, чтобы увидеть, какие процессы мешают мокко выйти изящно. Отчет по wtfnode показан ниже:

[WTF Node?] open handles:
- File descriptors: (note: stdio always exists)
  - fd 1 (tty) (stdio)
  - fd 2 (tty) (stdio)
- Sockets:
  - (?:?) -> null:? (destroyed)
  - IP ADDRESS:52510 -> IP ADDRESS:3306
- Timers:
Unable to determine callsite for "bound". Did you require `wtfnode` at the top of your entry point?
  - (10000 ~ 10 s) bound  @ unknown:0
  - (10000 ~ 10 s) (anonymous) @ C:\GVW6\node_modules\generic-pool\lib\Pool.js:389
  - (9999 ~ 9 s) bound @ C:\GVW6\node_modules\generic-pool\lib\ResourceRequest.js:48

Насколько я понимаю, процесс, выполняющийся на порте 3306, не позволяет завершить работу mocha, а порт 3306 является моим сервером базы данных.

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 31 октября 2018

Был еще один скрипт в приложении, который был экземпляром sequelize. Этот сценарий не закрывал соединение. Добавил туда команды закрытия и решил проблему. Спасибо всем за помощь:)

...