Создает ли mocha / supertest сервер express для каждого набора тестов? - PullRequest
0 голосов
/ 13 марта 2020

Я использую mocha, supertest и proxyquire с последних нескольких дней.

Я могу провести интеграционный тест без проблем. Но у меня есть несколько вопросов.

Это один набор тестов из моего проекта.

const expect = require('chai').expect
const request = require('supertest')
const _ = require('lodash')
const sinon = require('sinon')
const faker = require('faker')



describe('ComboController  /api/v1/combos', function () {
    const app = require('../src/app')
    it('should GET combo of given id: getComboById', async () => {
        const response = await request(app)
            .get(`/api/v1/combos/${faker.random.alphaNumeric(1)}`)
            .set('Accept', 'application/json')
            .expect('Content-Type', /json/)
            .expect(200)
        const body = response.body
        expect(body).to.have.keys('status', 'message', 'data')
        expect(body.status).to.be.a('Boolean').true
        expect(body.data).to.be.a('Object')
    })
})

Итак, я хочу знать.

Какова роль мокко здесь?

Я знаю, с помощью supertest я могу сделать http-запросы.

Но для каждого набора тестов я передаю экземпляр express app.


Итак, Что лучше всего делать с этим express приложением?

Создает ли он каждый раз новый сервер для отправки запросов?


..и если да, возможно ли создать только один express сервер для каждого набора тестов?

1 Ответ

0 голосов
/ 13 марта 2020

Да, каждый раз, когда вы передаете приложение express в супер-тест, оно запускает сервер express для вас, и если вы хотите создать сервер express и использовать его в некоторых модульных тестах, вы можете сделать это. в разделе перед, чтобы создать сервер и использовать его несколько раз. Кроме того, я предлагаю вам проверить модуль rest- bdd -testing , это так просто с некоторыми приятными функциями для тестирования REST API.

describe('ComboController  /api/v1/combos', function () {
    let server;
    const app = require('../src/app')
    
    before(()=> {
        server = request(app);
    });
   
    it('should GET combo of given id: getComboById', async () => {
        const response = await server;
            .get(`/api/v1/combos/${faker.random.alphaNumeric(1)}`)
            .set('Accept', 'application/json')
            .expect('Content-Type', /json/)
            .expect(200)
        const body = response.body
        expect(body).to.have.keys('status', 'message', 'data')
        expect(body.status).to.be.a('Boolean').true
        expect(body.data).to.be.a('Object')
    })
})
...