Тестирование на сервере в Коа - PullRequest
0 голосов
/ 13 мая 2018

Я использую Koa для веб-разработки в NodeJS, у меня есть файл сервера, который ничего не делает, кроме как запустить сервер и инициализировать несколько промежуточных программ.Ниже приведен пример кода

server.js

const Koa = require('koa');
var Router = require('koa-router');
var bodyParser = require('koa-bodyparser');
var app = new Koa();
var router = new Router();
app.use(bodyParser());
router.post('/abc', AbcController.abcAction);
router.post('/pqr', PqrController.pqrAction);

app.use(router.routes());
app.listen(3000);

Когда мы запустим npm start, сервер запустится на порт 3000, и теперь я хочу написать тестовый блокдля этого файла используйте mocha, chai and sinon.

Один из способов - создать тестовый файл, скажем server_test.js и сделать что-то вроде следующего (просто пример):

var server = require(./server);
server.close();

Для этого нам нужно добавить следующие строки вserver.js

var server = app.listen(3000);
module.exports = server;

Это хорошая практика?Я думаю, что мы не должны выставлять сервер таким способом?

Поскольку у нас нет самодельной функции здесь в этом файле, действительно ли требуется тестирование?

Должны ли мы также исключить такие файлы из покрытия sonarqube?

Всегда приветствуются любые другие предложения.Нужна ваша помощь, ребята.Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Существует, прежде всего, 2 способа, с помощью которых вы можете справиться с остальными делами.

Один из них - поместить тестовые наборы вместе с файлом исходного кода.(в вашем случае это будет server.spec.js).Я лично предпочитаю этот способ, поскольку он поощряет модульность кода и делает ваши модули полностью независимыми.

Другой способ - создать еще один каталог, скажем, тест, в котором вы можете поместить все свои тестовые наборы в соответствии с той же структурой каталогов, что и основное приложение.Это действительно полезно для приложений, в которых тестовые случаи рассматриваются только в то время, когда они находятся в стадии разработки, а затем во время производства вы можете просто игнорировать отправку этих файлов.

Кроме того, я обычно предпочитаю следовать принципам функционального программирования, поскольку оно действительно помогает независимо тестировать каждый блок кода.

Надеюсь, это поможет

0 голосов
/ 13 мая 2018

Вы можете использовать chai-http для тестирования конечной точки

это то, что я использую для своего проекта

const chai = require('chai');
const chaiHttp = require('chai-http');
const expect = chai.expect;

const app = require('../app');

describe('/GET roles', function () {
  it('should return bla bla bla',
    function (done) {
      chai.request(app)
        .get('/roles')
        .end(function (err, res) {
          expect(res.status).eql(200)
          expect(res.body).to.have.property('message').eql('Get role list success');
          expect(res.body).to.have.property('roles');
          expect(err).to.be.null;
          done();
        });
    }
  );
});
...