вызов параметра jest.spyOn «имя метода» с переменной

#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 был определен в массиве в виде строки, что не сработало — но с явным любым оно работает.