#typescript #jestjs #ts-jest
Вопрос:
Работая с машинописным текстом и шуткой, у меня есть класс, определенный методом
export class myAPI { public someMethod(){...} }
и хотел бы вызвать jest.spyOn на нем, что отлично подходит для прямого вызова, например
jest.spyOn(myAPI.prototype, 'someMethod')
Но при попытке предоставить метод второго параметра в качестве переменной:
const theMethodName : string = 'someMethod' jest.spyOn(myAPI.prototype, theMethodName)
Я получаю Argument of type 'string' is not assignable to parameter of type 'FunctionPropertyNameslt;Requiredlt;myApigt;gt;'.
Как я могу привести его к ожидаемому типу?
Комментарии:
1.
const string theMethodName = ...
это не машинописный текст. Предположительно , у вас действительно естьconst theMethodName: string = ...
— если бы вы только что сделалиconst theMethodName = 'someMethod'
тип'someMethod'
, который, как показывает ваш первый пример, действителен, а неstring
.2. Вы правы — я исправил код … и это также указало мне на решение — спасибо!
Ответ №1:
Обеспечение того , чтобы переменная была явно введена не как string
, а как any
решена!
Комментарии:
1. Это действительно решает проблему, или вы просто скрываете другую проблему?
2. Я верю, что это действительно решает эту проблему. В моем несколько более сложном варианте использования я использую
test.each(arrayOfParams)
для динамического запуска нескольких тестов. Параметр для spyOn был определен в массиве в виде строки, что не сработало — но с явным любым оно работает.