Тесты не запускаются, потому что машинопись выдает ошибку при попытке проверить тип проверки - PullRequest
0 голосов
/ 20 декабря 2018

Попытка проверить, чтобы убедиться, что типизированной переменной могут быть назначены только определенные значения.Есть ли способ использовать jest для выдачи ошибки, если назначено недопустимое значение, без машинописи, препятствующей запуску тестов и выдаче ошибки перед выполнением тестов?

In class constructor:
defaultValue: string | null

In test:
expect(() => instance.defaultValue = 100).toThrow()

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

1 Ответ

0 голосов
/ 20 декабря 2018

Typescript - это не средство проверки типов во время выполнения, это средство проверки типов во время компиляции.Это означает, что все типы проверяются перед тем, как код будет преобразован в javascript, и в случае ошибки типа компиляция завершится неудачно.Если ваш класс берет данные из непроверенного источника, то есть API, вы не можете проверить это с помощью машинописи.

Ваш тест предполагает 1 из 2 вещей:

Либо Ваш конструктор предназначен для использования данных, которыеизвестен только во время выполнения, но всегда должен быть строкой и должен выдавать ошибку, если это не так.В этом случае вы можете привести ваш класс к any, что полностью удалит проверку типов для этого объекта, но позволит вам проверить, что ваш класс выдает ошибку.

const instance = new (MyClass as any)(42) // throws an error

Или ваш класс используется толькоданные, которые разработчик явно предоставляет ему, и ваш тест только проверяет, что машинопись не позволит разработчику совершить ошибку.В этом случае это бесполезный тест, и вам, вероятно, следует удалить его.

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