如何使用单元测试来测试资源控制器

时间:2018-08-17 14:50:29

标签: unit-testing testing react-admin

我具有以下标准的react-admin结构设置,并且一切都能按预期工作,资源从端点上获取了GET_LISTGET_ONE的数据,这是我要测试的问题CandidateView组件,我不知道如何传递一些模拟数据以检查何时呈现它会包含所有预期的数据。

<Admin
    title="Admin"
    dashboard={Home}
    dataProvider={restProvider}
    history={history}
    loginPage={Login}
    menu={Menu}
  >
    <Resource
      name="candidates"
      list={Candidates}
      icon={UserIcon}
      edit={CandidateEdit}
      show={CandidateView}
    />
  </Admin>

我是否必须挂载Resource才能进行测试?还是有更好的方法来挂载和测试我感兴趣的子组件?

1 个答案:

答案 0 :(得分:0)

说实话,React Admin控制器旨在易于使用和破解,而不易于测试。

假设您使用的是这样的简单显示视图:

export const CandidateView = props => (
    <Show {...props}>
        <SimpleShowLayout>
            <TextField source="title" />
            <TextField source="position" />
            <RichTextField source="body" />
            <DateField label="Registration date" source="created_at" />
        </SimpleShowLayout>
    </Show>
);

实际上,您可以阅读源代码,找到所有HOC,注入所有必需的道具,安装视图并测试输出。这很痛苦,但是可行。

但是,如果您唯一的目标只是测试此视图是否具有titlepositionbodycreated_at正确的字段,则不是有效的方法。

我们将React Admin资源声明视为一个简单的配置。 (您不会测试XML文件)

在我们的应用上,我们使用端到端测试来检查所有视图是否配置正确,并且具有正确的组件和行为

您可以在React Admin本身的页面上找到使用cypress或硒进行E2E测试的示例。 在cypress/integration文件夹中查看我们运行的所有测试。