Как создать управляемый данными тест в 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 обнаружит тест, если он будет вложен как таковой, но он работает просто отлично.
Наслаждайтесь!