Как вы издеваетесь над функцией внутри другой функции с помощью Jest? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь выяснить, как написать jest-тест для этого кода, который написан вне класса в компоненте реагирования.

export const getContent = async (id) => {
   const idCheck = id ? id : '';

   return (
     apiCall('get', 'api/content', null, { id: idCheck }).then((response) => {
       const addingKey = addKey(response.data.getContent);
       return addingKey;
   }))
};

Это написано вне класса, и у меня естьимпортировал метод в мои тесты следующим образом:

import { getContent } from '../../../client/pages/content';

Если я запускаю эти тесты, я получаю, что response.data.getContent не определен, что имеет смысл, потому что я не издевался и не шпионил за apiCall.

 const content = await getContent();
 expect(content).toEqual(response);

Итак, я пытаюсь высмеивать ответ, который мне дает apiCall, чтобы я мог отправить ему разные данные, чтобы проверить, работает ли addKey, как я ожидаю.

Я пытался издеваться над apiCall и пытался шпионить за ним, но я не думаю, что понимаю, как это сделать правильно:

const spy = jest.spyOn(getContent, 'apiCall');
apiDependency.apiCall = jest.fn(() => response)

1 Ответ

0 голосов
/ 18 октября 2019

Можете ли вы попробовать что-то подобное?

jest.mock("someModule/someFile", () => {
    const originalModule = (jest as any).requireActual("someModule/someFile");
    return {
        ...originalModule,
        someOtherFuncs: {
            ...originalModule.someOtherFuncs,
            apiCall: jest.fn(() => {
                return response;
            }),
        },
    };
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...