我是反应测试库的新手。尝试为我的 App.js
创建测试文件。下面是我的App.js
import React from 'react';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
nav: [],
Data: { navigation: [] },
messages: {
errors: [],
infos: []
},
entitlements: {}
}
}
componentDidMount() {
let app = this;
Api.getEn().then(data => {
// Its showing in uncovered lines but i have mocked the function on beforeEach method
app.setState({ entitlements: data });
app.setState({
nav: {
name: "Administration",
alt: "Administration",
link: '/ui',
priority: 400,
subLinks: links
}
});
});
}
render() {
let webhook = <Bla Data={this.state.Data} nav={this.state.nav} messages={this.state.messages} />
return (<Switch>
<Route path="/webhook">
{webhook}
</Route>
<Route path="/">
<Bla Data={this.state.Data} nav={this.state.nav} messages={this.state.messages} />
</Route>
</Switch>
);
}
}
export default withRouter(App);
App.test.js
beforeEach(() => {
Api.getEn() = jest.fn(() => {
return Promise.resolve();
});
});
尽管我在 componentDidmount
方法中创建了模拟函数,但在我的 beforeEach
方法 api 调用中显示未覆盖的部分。
是不是因为我的代码正在访问 this
关键字并引用 app
like app.setState
。
我不知道为什么下面几行仍然显示在未涵盖的部分。任何人都可以请提供一些建议或指导。