#javascript #reactjs #unit-testing #jestjs
#javascript #reactjs #модульное тестирование #jestjs
Вопрос:
Я пытаюсь издеваться над одним из моих создателей действий в шутку. На самом деле, я тестирую свой компонент React. И мне нужно проверить, была ли вызвана функция action-creator при каком-то событии. Я пытался издеваться над функцией через jest.mock
, но выдает ошибку, говорящую:
Do not import `@jest/globals` outside of Jest test environment.
Вот что я пробовал до сих пор, но это не работает:
describe('>> SCREEN -- Tests Step1', () => {
describe('• handleSubmit function tests', () => {
beforeEach(() => {
jest.mock('../../redux/modules/test/test', () => ({
fetchUser : jest.fn()
}))
})
it('Should call fetchUser when called', () => {
handleSubmit({ value : '1234' })
expect(fetchUser).toHaveBeenCalledTimes(1)
})
})
})
Я также пытался издеваться над функцией вне тестовых костюмов. но это тоже не сработало. Я не уверен, чего мне здесь не хватает.
Пожалуйста, дайте мне знать, если вам нужна более подробная информация об этом.
Комментарии:
1. Как вы импортируете и используете fetchUser в своем коде?
2. это частичный импорт. Я импортирую его как:
import {fetchUser} from '../../....
Ответ №1:
Один из способов, которым вы можете подойти к нему.
import * as api from "../../redux/modules/test/test";
test("...", () => {
const userSpy = jest.spyOn(api, 'fetchUser');
handleSubmit({ value : '1234' });
expect(userSpy).toHaveBeenCalledTimes(1);
});
Комментарии:
1. Ах, это сработало бы в этом случае. Но теперь проблема в том, что я хочу издеваться над
react-redux
‘suseSelector
, и я хочу, чтобы он возвращал фиктивное значение. Есть идеи, как это сделать..2. Сначала вам нужно обернуть свой компонент внутри Redux Provider. После отправки некоторого действия, которое обновляет селектор… Я думаю, вам нужно обновить пример кода или задать новый вопрос.