Я работаю над тестированием сервера Apollo RESTDataSource
с помощью Jest. Мое приложение написано на TypeScript. Мой класс CDCDataSource
расширяет абстрактный класс RESTDataSource , который сам расширяет абстрактный класс DataSource
. RESTDataSource
имеет метод get
, который позволяет извлекать данные из внешнего источника данных REST. Я использую sh для имитации этого метода, поскольку я использую sh для имитации внешнего источника данных.
protected async get<TResult = any>(
path: string,
params?: URLSearchParamsInit,
init?: RequestInit,
): Promise<TResult> {
return this.fetch<TResult>(
Object.assign({ method: 'GET', path, params }, init),
);
}
Однако, когда я пытаюсь издеваться над этим методом, используя spyOn
Jest - после второго ответа здесь: Jest: Как издеваться над одним конкретным c методом класса -
import CDCDataSource from '../CDCDataSource';
test('Test', () => {
let dataSource = new CDCDataSource();
let spy = jest.spyOn(dataSource, 'get').mockImplementation(() => 'Hello');
expect(dataSource.get()).toBe('Hello');
Однако я получаю ошибку TypeScript
TS2768: нет перегрузки, соответствующей этому вызову
вместо get
в jest.spyOn(dataSource,'get')
, и я получаю
вместо get
в
expect(dataSource.get()).toBe('Hello');
Таким образом, может показаться, что часть проблемы заключается в том, что это метод защиты - я не понимаю, как протестировать этот метод, чтобы иметь возможность имитировать API.
My tsconfig.json
is
{
"compilerOptions": {
"target": "ES6",
"lib": [
"esnext",
"dom"
],
"skipLibCheck": true,
"outDir": "dist",
"strict": false,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"module": "commonjs",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"sourceMap": true,
"alwaysStrict": true,
},
"exclude": [
"node_modules"
]
}
Это проект Node Apollo Server (с использованием Node 12.14.0 и TypeScript 3.8.3)
Спасибо за любые подсказки!