Модульное тестирование с помощью Jest, ожидайте проблемы с получением пустого / неопределенного объекта - PullRequest
0 голосов
/ 05 марта 2019

Я новичок в модульном тестировании и пытаюсь проверить длину навигационной панели, ниже вы можете увидеть компонент навигационной панели, который находится внутри класса

<AppBar className={classes.appBar} position="static">
        <Toolbar className={classes.toolbar}>
            {authenticated && this.state.layoutMode ==='desktop' ? (
                <Grid container
                    direction ="row"
                    justify="flex-end"
                    alignItems="center">
                    <div className={classes.root}>
                        <Tabs id="Tab" className = {classes.tabBar} value={value} onChange={this.handleChange}>
                            <Tab label="example" alt="example" onClick={() => Router.push('/example')}/>
                            <Tab label="example" alt="example" onClick={() => Router.push('/example')}/>
                            <Tab label="example" alt="example" onClick={() => Router.push('/example')}/>
                            <Tab label="example" alt="example" onClick={() => Router.push('/example')}/>
                            <Tab label="example" alt="example" onClick={() => Router.push('/example')}/>
                            <Tab label="example" alt="example" onClick={() => Router.push('/example')}/>
                        </Tabs>
                    </div>
                </Grid>
            ) : (
                authenticated && <BurgerMenu/>
            )}

Ниже приведен тест, который я имеюнаписано до сих пор

describe('NavBar', () => {
const intialState = {
    ui: { width: 1361 },
    auth: { authenticated: true }
}

let container;
beforeEach(() => {
    container = shallow(<Nav />);
});

it('should render self and subcomponents', () => {
    expect(container).toMatchSnapshot();
});

it('should contain an AppBar', () => {
    console.log(container.find(AppBar));
    expect(container.find(AppBar)).toHaveLength(1);
});

})

однако моя проблема заключается в том, что .find (AppBar), кажется, не найден, при использовании журнала консоли (container.find (AppBar))он показывает следующее «ShallowWrapper {}», это будет означать, что объект пуст и, следовательно, не равен 1, однако я не знаю, куда указать поиск, чтобы правильно найти вкладки для проверки

1 Ответ

0 голосов
/ 06 марта 2019

Решением является

let container;
beforeEach(() => {
    container = mount(<Nav />);
});

погружение вглубь DOM с мелким.

...