首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浅层不呈现包装的组件

浅层不呈现包装的组件
EN

Stack Overflow用户
提问于 2019-07-17 17:08:48
回答 1查看 275关注 0票数 1

component.js

代码语言:javascript
复制
<React.Fragment>
{ state.data  ?  jsx :  null }
</React.Fragment>

export default withStyles(styles, { withTheme: true })(Component);

我不能浅入用withStyles (material-ui样式)包装的组件,因此包装器返回未定义。我已经尝试过dive()方法。

我的测试代码如下所示。

Component.test.js

代码语言:javascript
复制
configure ({adapter : new EnzymeAdapter()});
const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);

const setup = (initialState={},props={}) => {
    const store = mockStore(initialState);
    const wrapper = shallow(<Component store={store} {...props}/>).dive();

    return wrapper;
};

const findAttrByTest = (wrapper,val) => {
    return wrapper.find(`[data-test="${val}"]`);
};

describe("renders <Component>", () => {
    let wrapper;
    beforeEach(() => {
        const props = { };
        const initialState = {
                         value: '',
                         id   : ''
                         }
 wrapper = setup(initialState,props);
    });
test("it should return `some text` when no data is loaded", () => {
        const component = findAttrByTest(wrapper,"data-loading");
        expect(component.length).toBe(1);
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-17 17:50:10

通过使用.WrappedComponent,您可以访问内部组件并删除dive()。测试代码将如下所示

代码语言:javascript
复制
configure ({adapter : new EnzymeAdapter()});
const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);

const setup = (initialState={},props={}) => {
    const store = mockStore(initialState);
    const wrapper = shallow(<Component.WrappedComponent store={store} {...props}/>);

    return wrapper;
};

const findAttrByTest = (wrapper,val) => {
    return wrapper.find(`[data-test="${val}"]`);
};

describe("renders <Component>", () => {
    let wrapper;
    beforeEach(() => {
        const props = { };
        const initialState = {
                         value: '',
                         id   : ''
                         }
 wrapper = setup(initialState,props);
    });
test("it should return `some text` when no data is loaded", () => {
        const component = findAttrByTest(wrapper,"data-loading");
        expect(component.length).toBe(1);
    });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57072333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档