#typescript #unit-testing
#typescript #модульное тестирование
Вопрос:
Я обнаружил, что во многих проектах typescript целью модульного теста является ts
исходный код, а не js
код, созданный на основе ts
исходного кода.
Большую часть времени мы должны проверять, что произойдет, если пользователь передаст неверный параметр в функции. Для этой цели мы должны протестировать встроенный js
код, поскольку в IDE уже есть утверждение типа для ts
исходного кода, у нас нет шансов передать неправильный параметр.
Наконец, мой вопрос заключается в том, существует ли официальное руководство или рекомендации по модульному тестированию?
Ответ №1:
существует ли официальное руководство или рекомендации по модульному тестированию?
Этот вопрос, вероятно, выходит за рамки этого сайта.
Большую часть времени мы должны проверять, что произойдет, если пользователь передаст неверный параметр в функции. Для этой цели мы должны протестировать встроенный js-код
Во-первых, я бы не согласился с предпосылкой. Единственная точка, в которой вам нужно беспокоиться о том, что произойдет, если пользователь введет неправильный параметр, находится на границах вашего модуля (где пользователь будет вводить входные данные). Любым внутренним классам и функциям не нужно беспокоиться об этом.
Во-вторых, если вы хотите проверить, что произойдет, если пользователь введет неправильный параметр, вы все равно можете выполнить это тестирование в TypeScript, используя any
тип. Например, если у меня есть функция:
function getStringLength(str: string): number {
if (typeof str !== 'string') {
return undefined;
}
return x.length;
}
Затем я мог бы протестировать его с:
it('Should throw an error on a non-string type', () => {
expect(getStringLength(1 as any)).toBeUndefined();
});