Я пытаюсь проверить свою функцию на ComponentDidMount
.Но я получаю эту ошибку: Cannot destructure property params on null or undefined
.
Функция, которую я хочу проверить, такова:
componentDidMount() {
this.fetchUser();
}
И она зависит от этой:
fetchUser = () => {
getUser(this.getUserUsername()).then(username => {
this.setState({
user: username.data
});
});
};
который в свою очередь зависит от этого:
getUserUsername = () => {
const { match } = this.props;
const { params } = match;
console.log(params, 'params'); // return an object { username: "john" }
console.log(match, 'match');
**// return an object
// { isExact: true
// params:
// username: "john" .
// __proto__: Object
// path: "/management/users/:username"
// url: "/management/users/john" }**
return params.username;
};
И вот мой тест:
describe('componentDidMount', () => {
it('should call fetchUsers function', () => {
const match = { params: 'testName' };
const params = match;
const fetchUserFn = jest.fn(params);
const wrapper = shallow(<UserDetailsScreen fetchUsers={fetchUserFn} />, {
disableLifecycleMethods: true
});
wrapper.instance().componentDidMount();
expect(fetchUserFn).toHaveBeenCalledTimes(1);
});
});
Но я получаю вышеуказанную ошибку.Не уверен, что мне нужно сделать, и хотя я нашел ответы, похожие на эту проблему, ответы не решают мою проблему.
КОД для getUser:
export const getUser = username => {
const options = {
method: httpMethod.GET,
url: endpoint.GET_USER(username)
// The GET_USER is an endpoint for
// that specific username
};
return instance(options);
};
Вышеприведенное возвращает aобещаю.