Как создать управляемый данными тест в Node.js

В Node.js модульные тесты, как создать управляемые данные unit tests?

Например, у меня есть общие function / method, который я хочу повторно использовать в нескольких модульных тестах с различными наборами данных. Я пытался заглянуть в nodeunit, vows, whiskey, qunit, expresso; Но я не смог найти способ достичь этой функциональности.

Я не смотрел на вызов функции буквально в нескольких тестах, а скорее использовал общий method в цикле, чтобы собрать данные в каждой итерации и выполнить их, как unittest

Причина этого в том, что у меня есть не менее 1000 строк параметризованных данных, для которых я хочу написать unittest, Очевидно, я не могу продолжать писать 1000 unittests физически.

Кто-нибудь, не могли бы вы указать мне способ достижения вышеуказанного.

2 ответа

Существует дополнение Qunit, которое позволяет запускать параметризованные тесты Quint
https://github.com/AStepaniuk/qunit-parameterize

Таким образом, вы можете разделить данные теста и метод теста и запустить один и тот же метод теста для разных наборов данных.

Это довольно старый пост, но я сам решил эту проблему и не смог найти чистого решения для QUnit без использования плагина, на который ссылается другой комментарий (qunit-parameterize). Честно говоря, я не мог понять, как интегрировать плагин с проектом моей компании, и сдался примерно через час.

Вот как я решил это:

Просто определите массив с вашими входными данными (и ожидаемыми выходными данными, если необходимо), выполните итерацию по вашему массиву и определите тест QUnit в обратном вызове! Супер просто, правда, но работало довольно хорошо.

const testCases = [
    { input: "01/01/2015", expected: "2015-01-01" },
    { input: "09/25/2015", expected: "2015-09-01" },
    { input: "12/31/2015", expected: "2015-12-01" }
];

testCases.forEach(testCase => {
    QUnit.test("gets first of month",
    () => {
        const actual = new classUnderTest().getFirstOfMonth(testCase.input);
        strictEqual(actual, testCase.expected);
    });
});

Я не был уверен, что QUnit обнаружит тест, если он будет вложен как таковой, но он работает просто отлично.

Наслаждайтесь!

Другие вопросы по тегам