在对现有组件进行一些更改之后,我在开玩笑的测试中遇到了麻烦。 基本上,我将对componentDidMount函数的调用添加到在内部执行“提取”的函数,现在在执行笑话测试时遇到错误
fetch在utils / index.ts中被调用,而这一个从MyComponent.tsx中被调用
componentDidMount() {
this.props.actions.requestLoadA();
this.props.actions.requestLoadB();
// Problematic call HERE
this.getXPTOStatuses("something");
}
getXPTOStatuses = (something: string) => {
HttpUtility.get(`/api/getXPTOStatuses?param=${something}`)
.then(response => handleFetchErrors(response))
.then(data => {
// ....
})
.catch(error => {
// show the error message to the user -> `Could not load participant statuses. Error: '${error.message}'`
});
}
和get(...)
public static get = (url: string) => fetch(url, { method: "GET", headers: { Accept: "application/json" }, credentials: "same-origin" });
和开玩笑的原因: MyContainer.test.tsx
describe("Risk Import Container Tests", () => {
let props: MyContainerProps;
beforeEach(() => {
props = initialProps;
});
it("Matches the snapshot", () => {
const props = initialProps;
const tree = shallow(<MyContainer {...props} />);
expect(tree).toMatchSnapshot();
});
});
答案 0 :(得分:0)
默认情况下,酶的shallow
函数调用componentDidMount
。因此,这自然会转到使用fetch
的地方。
您有2个选项,以某种方式模拟fetch
。
或使用shallow
选项disableLifecycleMethods
禁用对componentDidMount
的呼叫。