Мока тестирует прохождение и провал, когда должен, но оба пытаются и ловят, когда бегут - PullRequest
0 голосов
/ 18 апреля 2019

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

Я пытался передвигаться по некоторым вызовам и добавлять done () в надежде, что это решит проблему, но безуспешно.Я пытаюсь держаться подальше от обещаний, так как они могут быть действительно беспорядочными без каких-либо хороших знаний, когда все становится немного сложнее, и для этого проекта мне рекомендовали использовать асинхронные, а не обещания, так как это проще, и я просто заканчивал работу для следующей группы, чтобы иметьпрочная основа.

connectToTable: async function (client) {
    client = client || new Client({
        user: "my_user",
        host: "postgres",
        database: "my_database",
        password: "password123",
        port: 5432,
        max: 20,
        idleTimeoutMillis: 30000,
        connectionTimeoutMillis: 2000,
    });

    try {
        let resp = await client.connect()
        await expect(resp).to.not.contain('Error');
        done()
        return resp;
    }
    catch { 

        console.error("didnt connect") 
    }
},

executeQueryOnDatabase: async function (client, col, query) {

    //client.connect()
    //checks to verify that the columns of alphatwo match the array created with expected order and columns
    try {
        let resp = await client.query(query)

        for (let respCol of resp) {
            console.log(JSON.stringify(col))
             await expect(JSON.stringify(col)).to.contain(respCol); // this will turn the specified col list to string and then
            // check if that string contains what was was found in db
        }
    }
    catch {     
        console.error("failed") 
    }
},

Фактические результаты

@ mocha / literate-app

test_1 |> mocha --reporter spec ./test/test/code/postGresFactoryTable.test.js

test_1 |

test_1 |

test_1 |

test_1|Таблицы PostGres

test_1 |не следует подключаться к базе данных в различных ситуациях

test_1 |1) не может подключиться, если имя пользователя или пароль неверны

test_1 |Проверка наличия alphatwo в базе данных

test_1 |не подключен

test_1 |✓ должен пройти, если мы подключимся и таблица alphatwo существует

test_1 |✓ следует отключиться от базы данных красиво

test_1 |Проверка правильности сборки alphatwo

test_1 |не подключен

test_1 |✓ должен пройти, если мы подключимся и таблица alphatwo существует

test_1 |не удалось

test_1 |✓ должен пройти, если alphatwo правильно собран

test_1 |✓ следует отключиться от базы данных

test_1 |Проверка наличия в базе данных alpharead

test_1 |не подключен

test_1 |✓ должно пройти, если мы подключимся и таблица alpharead существует

test_1 |✓ следует отключиться от базы данных

test_1 |Проверка правильности сборки alpharead

test_1 |✓ должен пройти, если мы подключимся и таблица alpharead существует

test_1 |не подключен

test_1 |не удалось

test_1 |✓ должен пройти, если alpharead правильно построен

test_1 |✓ следует отключиться от базы данных

test_1 |

test_1 |

test_1 |10 проходов (2 с)

test_1 |1 ошибка

test_1 |

test_1 |1) PostGres Tables

test_1 |не следует подключаться к базе данных в различных ситуациях

test_1 |не может подключиться, если имя пользователя или пароль неверны:

test_1 |Ошибка: превышено время ожидания 2000 мс.Для асинхронных тестов и хуков убедитесь, что вызывается «done ()»если вы возвращаете обещание, убедитесь, что оно разрешено.(/literate-app/test/test/code/postGresFactoryTable.test.js)

test_1 |at listOnTimeout (internal / timers.js: 535: 17)

test_1 |at processTimers (internal / timers.js: 479: 7)

test_1 |

test_1 |

test_1 |

test_1 |Вход в базу данных в случае сбоя Ошибка

test_1 |не подключен

test_1 |нпм ERR!код ELIFECYCLE

test_1 |нпм ERR!errno 1

test_1 |нпм ERR!@ мокко: mocha --reporter spec ./test/test/code/postGresFactoryTable.test.js

test_1 |нпм ERR!Статус выхода 1

test_1 |npm ERR!

test_1 |нпм ERR!Не удалось выполнить скрипт @ mocha.

test_1 |нпм ERR!Это, вероятно, не проблема с npm.Там, вероятно, дополнительныеgging output выше.

test_1 |

Ожидаемые результаты будут такими же, однако, он выводит «not connect» только один раз и никогда не должен выводить «failing»

Помощь приветствуется, и я не могу найти, чтобы это происходило в другом месте, где

Небольшая информация о том, что это выполняется через docker-compose, хотя я сомневаюсь, что это вызывает какие-либо проблемы.

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

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