首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型'{ store: MockStoreEnhanced<unknown,{}>;}‘不能赋值给类型'IntrinsicAttributes & Pick[...]

类型'{ store: MockStoreEnhanced<unknown,{}>;}‘不能赋值给类型'IntrinsicAttributes & Pick[...]
EN

Stack Overflow用户
提问于 2020-07-20 20:18:55
回答 1查看 311关注 0票数 1

我正在尝试用typescript编写一个容器的单元测试。

根据多个答案,我应该使用模拟存储,并使用store属性将其提供给容器,该属性始终存在。不过,这似乎只在javascript中有效:

代码语言:javascript
复制
import React from "react";
import configureMockStore from "redux-mock-store";
import DashboardChooserContainer from "../../src/dashboard/DashboardChooserContainer";
import { shallow, mount } from "enzyme";


describe("/dashboard/DashboardChooserContainer", () => {
  const mockStore = configureMockStore();
  const store = mockStore(
    {}
  );
    const renderedComponent = shallow(<DashboardChooserContainer store={store}/>);
  
  it("some test will go here", () => {
    expect(
      renderedComponent.contains("a")
    ).toBe(true);
  });
});

但是,我在store=部件的const renderedComponent = shallow(<DashboardChooserContainer store={store}/>);行上得到了以下错误:

代码语言:javascript
复制
Type '{ store: MockStoreEnhanced<unknown, {}>; }' is not assignable to type '(IntrinsicAttributes & Pick<unknown, never>) | (IntrinsicAttributes & Pick<Pick<unknown, never>, never> & Pick<InferProps<unknown>, never>) | (IntrinsicAttributes & ... 2 more ... & Partial<...>) | (IntrinsicAttributes & ... 2 more ... & Partial<...>)'.
  Property 'store' does not exist on type '(IntrinsicAttributes & Pick<unknown, never>) | (IntrinsicAttributes & Pick<Pick<unknown, never>, never> & Pick<InferProps<unknown>, never>) | (IntrinsicAttributes & ... 2 more ... & Partial<...>) | (IntrinsicAttributes & ... 2 more ... & Partial<...>)'.ts(2322)

实际上-因为我只是试图引导项目-在这一点上,DashboardChooserContainer没有任何属性:

代码语言:javascript
复制
import { connect } from "react-redux";
import DashboardChooserUI from "dashboard/DashboardChooserUI";
import { GlobalState } from "GlobalState"

type ReduxDispatch = CallableFunction;
interface IDashboardProps {
}

function mapStateToProps(state:GlobalState):IDashboardProps {
  return {};
}

interface IRegistrationActionProps {
}


function mapDispatchToProps(dispatch:ReduxDispatch):IRegistrationActionProps {
  return {};
}


export default connect<IDashboardProps, IRegistrationActionProps, {}, GlobalState>(mapStateToProps,mapDispatchToProps)(DashboardChooserUI);

DashboardChooseUI:

代码语言:javascript
复制
import React, { ReactElement } from "react";
import DashboardUI from "./DashboardUI";


export default class DashboardChooserUI extends React.Component<{},{}> {

  render () {
    return <DashboardUI/>
  }
}

我现在的目标是为DashboardChooserContainer编写足够的测试,以便完全覆盖它。

EN

回答 1

Stack Overflow用户

发布于 2020-07-20 20:24:39

解决方案是将其包装到一个<Provider>中。不过,我不知道为什么。

代码语言:javascript
复制
const renderedComponent = mount(
  <Provider store={mockStore()}>
    <DashboardChooserContainer />
  </Provider>,
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62995247

复制
相关文章

相似问题

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