Мокко не может найти мои динамически сгенерированные тесты? - PullRequest
0 голосов
/ 30 января 2019

При генерации тестов с использованием цикла for в платформе обнаруживаются динамические тесты.Но для одного конкретного набора мне нужно получить данные из базы данных и создать тесты на основе этого.Программа, которую я использую, выглядит следующим образом:

 describe("Testing existence of elements", function (existence_suite_done) {

    let elements = [];
    models.cypher('match (a:page {id: "74ab8f9d-e24b-41d1-9390-d6fb338ece38"})-[r:child]->(b:element) return b;')
      .then((data) => {
        elements = data.records;
      })
      .then(() => {
        for(var i=0;i<elements.length;i++) {
          it('hello', (done) => {
            done();
          });
        }
      })
      .then(existence_suite_done)
      .catch(existence_suite_done);
  });

Теперь мне интересно, как заставить этот пакет работать именно тогда, когда тесты зависят от результатов обещания.Я предполагаю, что это как-то связано с областями видимости, но я не могу понять, где я иду не так.Любая помощь приветствуется

1 Ответ

0 голосов
/ 31 января 2019

Это должно работать.

// Your async data fetching emulation.
var models = {
    cypher: () => {
        return new Promise((resolve, reject) => {
            setTimeout(function () {
                resolve({ records: ['A', 'B', 'C', 'D', 'E'] });
            }, 300);
        });
    }
};


// The data query is inverted with respect to the loop.
describe("Testing existence of elements", function () {
    let elements;

    it('Fething and testing data', () => {
        return models.cypher()
            .then((data) => {
                elements = data.records;
            })
            .then(() => {
                for (var i = 0; i < elements.length; i++) {
                    var el = elements[i];
                    console.log(`Testing ${el} ...`);
                }
            });
    });
});

В качестве альтернативы, вместо использования done() callback, вы можете вернуть Promise ( документы ).

PS

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

Здесь я нашел аналогичный вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...