Что я пытаюсь сделать, это написать единичные тесты в Typcript для существующей библиотеки функций, которые у нас были в течение некоторого времени, которые были написаны с использованием простой JS. Вся наша логика страниц также проста в JS. Некоторые из этих функций бросали исключения, когда вводились неправильные типы. Например:Тестирование для TypeError с использованием TypScript и Jasmine
Таким образом, второй аргумент должен содержать строку, имя свойства, для которой вы хотите получить значения. Внутри функции pluck есть проверка типа, проверяющая, что массив объектов был передан, когда это не удается, он вызывает TypeError.
Так написать тест, подтверждающий, что правильный тип объекта, был принят в я написал бы его, как в равнинных JS:
expect(function(){ Collection.pluck([{"a":1},{"a":2}], 0); }).toThrowError(TypeError);
Однако в моем файле декларации у меня она определена как таковая:
declare namespace Collection {
function pluck(obj: Object, propertyName: string): any;
}
Так что, когда я иду, чтобы написать модульный тест, используя TS я получаю ошибку компиляции, очевидно:
Так как же мне делать WHA t Я хочу без каких-либо изменений в функции? Есть ли что-то, что я могу настроить в TS, чтобы игнорировать это только для этого файла?
Хотя это остановит ошибку TS, это провалит тест, потому что я тестирую, если он явно является строкой. Кроме того, я выполняю другие тесты, подобные этим, где я проверяю объекты, массивы, функции и т. Д., Где у меня тоже такая же проблема. –
будет обновляться в ответ –
Думаю, я мог бы использовать «any». Это просто странно, потому что он не отражает внутреннюю работу функции при использовании TS, но мы не можем начать использовать TS везде в нашем приложении, чтобы эта «ошибка» в определении не была замечена никем, кроме меня. Важно то, что скомпилированный JS остается тем же и продолжает бросать TypeError. –