Javascript 如何修复此笑话错误:“quot;组件遇到声明异常";?

Javascript 如何修复此笑话错误:“quot;组件遇到声明异常";?,javascript,reactjs,jestjs,enzyme,Javascript,Reactjs,Jestjs,Enzyme,我试着用Jest和酶来测试一种反应成分。目前我的测试非常简单,我只是想确保组件安装: 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() }); desc

我试着用Jest和酶来测试一种反应成分。目前我的测试非常简单,我只是想确保组件安装:

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();
  });
});
有争议的一行代码如下:

this.timerSDK = new window.TimerSDK({ accessToken: token });
TimerSDK
是通过
index.html
中的脚本标记加载的第三方脚本。它不像es6模块那样导入

当实际使用应用程序时,上面的代码在浏览器中运行良好,但在运行测试时出错

如何解决此问题?

Jest的默认设置是由
jsdom
提供的类似浏览器的环境,它提供了一个模拟的
窗口
,该窗口也是
全局
对象

您可以在测试开始时在第三方脚本上调用
require
,以获取其导出,并在
global
(或
window
)上设置这些导出(如果每次测试都需要,也可以在设置模块中进行设置):

global.TimerSDK=require('path-to-script');//{
const-app=shallow();
它('渲染成功',()=>{
expect(app.toMatchSnapshot();
});
});

组件没有修改窗口对象,它只是调用
TimerSDK
对象上的方法。你所说的在测试中导入脚本是有道理的,但这样做并不能消除错误。不幸的是:(@TK123第三方库是什么?我会看看它是如何工作的,并更新我的答案。谢谢你的帮助,但这是一个内部库,所以我不能发布它,“TimerSDK”是一个占位符lie lol我能说的就是它是用requireJS模块语法编写的,我对它不太了解。它已经缩小了。也许这就是问题所在,因为我注意到脚本不能在常规组件中导入而不抛出错误(因此我首先将它作为脚本标记加载)。因此,在测试中导入它可能也失败了…@TK123 gotcha,我已经使用requireJS模块syntaxUnrelated更新了脚本的答案,但是Jest也提出了这样一个“遇到声明异常”错误,如果您使用回调创建
todo
测试:“错误:必须仅使用描述调用todo。”
this.timerSDK = new window.TimerSDK({ accessToken: token });