Можно ли запустить набор тестов мокко с конечной точки узла?

Наша команда создала API для предоставления внутренних веб-сервисов нашей организации. Я создал набор тестов мокко для тестирования базы кода и в настоящее время запускаю его через интерфейс командной строки.

У нас есть корпоративная служба мониторинга, которая регулярно тестирует конечную точку «/ webcheck» для каждого сервера и уведомляет нас, если какой-либо из этих серверов не работает.

В настоящее время эта конечная точка просто отвечает строкой «total_status_code: ok», которая сообщает нам, что сервер запущен, и не более того. Другие конечные точки могут быть повреждены, и мы этого не узнаем.

Я хотел бы привязать эту конечную точку к моему набору тестов мокко, чтобы он возвращал только «total_status_code: ok», если все тесты пройдены.

У кого-нибудь есть подсказки, как я могу это сделать? В принципе, как вызывать мои тесты из узла?

Вот мой тестовый код на случай, если вам интересно:

const expect = require('chai').expect;
const app = require('../server/app.js');
const supertest = require('supertest');

const request = supertest.agent(app);

describe('Active Directory Module', () => {
    it('/ad/members endpoint should return: \n          -> an array of members for a given group \n          -> each element returned should be an object \n          -> John Doe should be the first user in the array', (done) => {
        request.get('/ad/members?group=%27CHQ%20Service%20Management%27')
        .expect(200)
        .end((err, res) => {
            let result = JSON.parse(res.text);
            expect(Array.isArray(result)).to.be.true;
            expect(typeof(result[0]) === 'object').to.be.true;
            expect(result[0].name === 'John Doe').to.be.true;
            done();
        })
    })
    it('/ad/membership endpoint should return: \n          -> an array of groups for a given user \n          -> each element returned should be an object \n          -> \'Domain Users\' should be the first element in the array', (done) => {
        request.get('/ad/membership?user=%27chq-mikeru%27')
        .expect(200)
        .end((err, res) => {
            let result = JSON.parse(res.text);
            // let result = res;
            expect(Array.isArray(result)).to.be.true;
            expect(typeof(result[0]) === 'object').to.be.true;
            expect(result[0].name === 'Domain Users').to.be.true;
            done();
        })
    })
    it('/ad/userinfo endpoint should return: \n          -> an object\n          -> Should include property called \'Given Name\'\n          -> given \'chq-stephenro\' the returned object should contain a property \'UserPrincipleName\' with value \'[email protected]\'', (done) =>{
        request.get('/ad/userinfo?user=%27chq-stephenho%27')
        .expect(200)
        .end((err, res) => {
            let result = JSON.parse(res.text);
            expect(typeof(result) === 'object').to.be.true;
            expect(result['GivenName']).to.not.be.undefined;
            expect(result['UserPrincipalName'] === '[email protected]').to.be.true;
            done();
        })
    })
})

describe('Database Querying Module', () => {
    it('/db/ci-co-conflict-checker should return \n          --> an array\n          --> of arrays\n          --> For each element:\n                    * the first, third, and fourth elements should be numbers\n                    * the second element should be a string\n                    * the fifth element should be a string', (done) => {
        request.get('/db/ci-co-conflict-checker/?cis=%27CA%20Service%20Catalog%27,%27CA%20Service%20Desk%20Manager%27&start=1533106860&end=1535699040')
        .expect(200)
        .end((err, res) => {
            let result = res.body;
            expect(Array.isArray(result)).to.be.true;
            expect(Array.isArray(result[0])).to.be.true;
            for ( var i = 0; i < result.length; i++ ) {
                for (var j = 0; j < result[i].length; j++ ) {
                    if ( j === 0 || j === 2 || j === 3) {
                        expect(typeof(result[i][j]) === 'number').to.be.true;
                    }
                    if ( j === 1 || j === 4 ) {
                        expect (typeof(result[i][j]) === 'string').to.be.true;
                    }
                }
            }
            done();
        })
    })
})


person mike_butak    schedule 12.10.2018    source источник


Ответы (1)


Да, вам нужен только клиентский отдых, чтобы nodejs сравнивал результат в expect, но это не модульный тест, это интеграционный тест.

person Matias Salinas    schedule 12.10.2018
comment
Спасибо @Matias - person mike_butak; 16.10.2018