Я пытаюсь протестировать функцию внутри componentWillMount.
составная часть
componentWillMount = () => {
const {
agents,
match
} = this.props;
this.edit = false;
this.agent = {};
if (match.params.id) {
this.edit = true;
this.agent = getAgent(agents, match.params.id);
if ("undefined" === typeof this.agent) {
push("/agents");
}
}
resetStatusMessage();
formResetError();
};
render = () => {
const { form } = this.props;
const agent = this.agent;
this.avatar = agent.avatar;
...........................
}
Я пытаюсь проверить, вызывается ли функция getAgent. И мне также нужно проверить, были ли вызваны resetStatusMessage () и formResetError ().
Тесты:
it("should call getAgent when mounted", () => {
const match = {
params: {
id: "1"
}
},
agents ={
loading: false,
byId : {
1:{
firstName: "abc",
lastName: "xyz"
}
},
avatar: "avatarUrl"
};
let mockGetAgent = jest.fn();
const store = configureStore();
const wrapper = mount(
<Provider store={store}>
<AgentForm match={match} getAgent={mockGetAgent}/>
</Provider>
);
expect(wrapper).toBeDefined();
expect(mockGetAgent).toBeCalled();
});
Но мой тест не удался с этим сообщением:
TypeError: Cannot read property 'avatar' of undefined
Как я могу решить эту проблему? В моем проекте React я использую шутку и энзим для тестирования.am new to react и энзим. Любая помощь будет действительно ощутимой.
getAgent()
и другие функции? Похоже, вы создали фиктивную функцию, но не передали ее компоненту. - person Billy Reilly   schedule 20.09.2017