«это» в мокко не работает с использованием await - PullRequest
0 голосов
/ 21 мая 2019

"it" в mocha не запускается при использовании await.

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

const subList1 = [
    {name: 'value1', info: 'value1'},
    {name: 'value2', info: 'value2'},
    {name: 'value3', info: 'value3'},
]
const subList2 = [
    {name: 'value1', info: 'value1'},
    {name: 'value2', info: 'value2'},
    {name: 'value3', info: 'value3'},
]
const subList3 = [
    {name: 'value1', info: 'value1'},
    {name: 'value2', info: 'value2'},
    {name: 'value3', info: 'value3'},
]

const mainList = [
    subList1, subList2, subList3, 
    ]

function getList() {
    return mainList;
}

describe('Test', async function () {
    const list = await getList();
    list.forEach(mainListItem => {
        describe('Main Test', function () {
            mainListItem.forEach(subListItem => {
                describe(subListItem.name, function () {
                    let valueInCaps;
                    const name = subListItem.name;
                    console.log(`name: ${JSON.stringify(name)}`);
                    before(function () {
                        valueInCaps = subListItem.info.toUpperCase();
                    })
                    it(name, function () {
                        console.log(valueInCaps);
                    })
                })
            })

        });
    });
})

Ожидается:

name: "value1"
name: "value2"
name: "value3"
name: "value1"
name: "value2"
name: "value3"
name: "value1"
name: "value2"
name: "value3"


  Test
    Main Test
      value1
VALUE1
        √ value1
      value2
VALUE2
        √ value2
      value3
VALUE3
        √ value3
    Main Test
      value1
VALUE1
        √ value1
      value2
VALUE2
        √ value2
      value3
VALUE3
        √ value3
    Main Test
      value1
VALUE1
        √ value1
      value2
VALUE2
        √ value2
      value3
VALUE3
        √ value3

Фактически:

name: "value1" name: "value2" name: "value3" name: "value1" name: "value2" name: "value3" name: "value1" name: "value2" name: "value3"

1 Ответ

0 голосов
/ 21 мая 2019

Если вы зайдете на веб-сайты Мокко , вы найдете хороший пример того, как структурировать тест. Я считаю, что ваша проблема в том, что вы ничего не утверждаете в своих тестах. Вы не проверяете никаких предположений.

// require an assertion library
var assert = require('assert');

    describe('Test', async function () {
        const list = await getList();
        list.forEach(mainListItem => {
            describe('Main Test', function () {
                mainListItem.forEach(subListItem => {
                    describe(subListItem.name, function () {
                        let valueInCaps;
                        const name = subListItem.name;
                        console.log(`name: ${JSON.stringify(name)}`);
                        before(function () {
                            valueInCaps = subListItem.info.toUpperCase();
                        })
                        it(name, function () {
                            console.log(valueInCaps);
                            assert.equal(someCondition)
                        })
                    })
                })

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