如何使用 jest + RTL 模拟与此关键字相关的代码

时间:2021-03-15 18:39:36

标签: reactjs jestjs react-testing-library

我是反应测试库的新手。尝试为我的 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 关键字并引用 applike app.setState。 我不知道为什么下面几行仍然显示在未涵盖的部分。任何人都可以请提供一些建议或指导。

0 个答案:

没有答案
相关问题