цель модульного теста в проекте typescript

#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();
});