Theme.spacing不是函数

时间:2019-07-06 12:58:55

标签: jestjs material-ui enzyme

我最近将我的react应用程序从material-ui v3迁移到v4,并用'@ material-ui / styles'替换了'@ material-ui / core / styles',用于测试,我们使用了笑话和酶。测试失败迁移后。如何解决此问题?错误如下:

警告:Material-UI:提供的styles自变量无效。     您正在提供的功能在上下文中没有主题。     父元素之一需要使用ThemeProvider。 错误:未被捕获[TypeError:theme.spacing不是函数] 完整的DOM呈现›遇到声明异常 TypeError:theme.spacing不是函数

  17 |   },
  18 |   selectEmpty: {
> 19 |     marginTop: theme.spacing(2),
     |                      ^
  20 |   },

2 个答案:

答案 0 :(得分:1)

材料UI的旧版本就像是从'@ material-ui / styles'导入{makeStyles};

但是他们已经更新了新版本,例如从'@ material-ui / core / styles'导入{makeStyles}

答案 1 :(得分:0)

您必须使用ThemeProvider包装所有测试。这样可以解决问题。 示例:

    wrapper = mount(
      <ThemeProvider>
        <Dropdown handleSelect={handleSelectSpy} options={options} />
      </ThemeProvider>,
    );