Оформление запроса перед началом всех испытаний в Мокко - PullRequest
0 голосов
/ 29 мая 2018

Я хотел бы протестировать мой простой API с /groups URL.Я хочу сделать запрос API к этому URL (используя Axios) до начала всех тестов и сделать ответ видимым для всех функций теста.

Я пытаюсь сделать response видимым, но не могу заставить его работать.Я следовал за аналогичным делом с заполнением БД авансом , но мне не повезло с моим делом.

Мой простой тестовый файл ниже:

var expect  = require('chai').expect
var axios = require('axios')
var response = {};
describe('Categories', function() {    
    describe('Groups', function() {
        before(function() {
            axios.get(config.hostname + '/groups').then(function (response) {                                                            
                return response;
            })                
        });

        it('returns a not empty set of results', function(done) {
            expect(response).to.have.length.greaterThan(0);
            done();            
        })
    });    
});

Я также попытался сделать слигмодификация функции before:

before(function(done) {
    axios.get(config.hostname + '/groups')
         .then(function (response) {                                                            
             return response;
         }).then(function() {
             done();
         })      
    });

но не повезло тоже.

Ошибка, которую я получаю, состоит в том, что response не меняется и не виден внутри it. AssertionError: ожидается, что {} будет иметь свойство 'length'

Суммирование: Как мне передать response из аксиос внутри в in()?

1 Ответ

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

Ваша первая форма неверна, потому что вы не возвращаете связанное обещание.Таким образом, у мокко нет возможности узнать, когда ваш before закончен или даже вообще асинхронен.Ваша вторая форма решит эту проблему, но так как axios.get уже возвращает обещание, то не стоит использовать встроенную поддержку обещаний mocha.

Что касается отображения ответа в itвам необходимо присвоить его переменной в области видимости, которая будет видна в пределах it.

var expect  = require('chai').expect
var axios = require('axios')
var response;
describe('Categories', function() {
    describe('Groups', function() {
        before(function() {
            // Note that I'm returning the chained promise here, as discussed.
            return axios.get(config.hostname + '/groups').then(function (res) {
                // Here's the assignment you need.
                response = res;
            })
        });

        // This test does not need the `done` because it is not asynchronous.
        // It will not run until the promise returned in `before` resolves.
        it('returns a not empty set of results', function() {
            expect(response).to.have.length.greaterThan(0);
        })
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...