Я пишу модульный тест, который ищет определенные c ошибки, когда определенные параметры не предоставляются объекту. В рамках настройки для моих тестов я передаю ему объект, содержащий входные параметры и ожидаемое сообщение об ошибке. При их написании я оставлял ожидаемое сообщение об ошибке из предоставленного объекта для одного из тестовых случаев. Этот тест должен возвращать объект ошибки с сообщением 'Node process.env cannot be null'
, он сравнивается с неопределенным объектом в .toThrow()
. К моему удивлению, этот тест все же прошел, а не выдал ошибку. .toThrow()
Джеста, похоже, воспринимает undefined
как то же значение, что и мое сообщение об ошибке. Я использую Jest 24.9.0 для своих тестов.
Почему этот тест проходит? Это связано с поведением Typescript / Javascript? Это как-то связано с Jest?
it.each([
[
'missing event info',
{
event: undefined,
env: getValidEnv(),
expectedError: 'handler event cannot be null'
}
],
[
'missing environment info',
{
event: getValidEvent(),
env: undefined,
}
]
])('should throw an error if (%s)', (testCaseName: any, params: any) => {
const parser = new InputParser(params.event, params.env);
expect(() => parser.getInputs()).toThrow(params.expectedError);
});
Редактировать:
Дополнительное примечание: то же самое происходит, если params.expectedError
задана пустая строка ''
.