【发布时间】:2019-03-21 03:57:44
【问题描述】:
我正在尝试使用 Jest 和 Enzyme 测试 React 组件。目前我的测试非常简单,我只是想确保组件挂载:
import React from 'react';
import Enzyme, { shallow } from 'enzyme';
import EnzymeAdapter from 'enzyme-adapter-react-16';
import App from './App';
Enzyme.configure({
adapter: new EnzymeAdapter()
});
describe('App Component', () => {
const app = shallow(<App />);
it('renders successfully', () => {
expect(app).toMatchSnapshot();
});
});
运行它会出现以下错误:
App Component › encountered a declaration exception
TypeError: window.TimerSDK is not a constructor
有问题的违规行是这段代码:
this.timerSDK = new window.TimerSDK({ accessToken: token });
TimerSDK 是第三方脚本,通过index.html 中的脚本标签加载。它不像 es6 模块那样导入。
上面的代码在实际使用应用程序时在浏览器中运行良好,但在运行测试时出错。
如何解决这个问题?
【问题讨论】:
-
不相关,但如果您创建带有回调的
todo测试,Jest 也会咳出这个“遇到声明异常”错误:“错误:必须仅使用描述调用 Todo。”跨度>
标签: javascript reactjs jestjs enzyme