[英]TypeError: Cannot read property 'apply' of undefined
Can't testing a react component. 无法测试反应组件。 Below I put code of my setup.js - my configure file and text of error.
在下面,我放置了setup.js的代码-我的配置文件和错误文本。
require('babel-register')(); var jsdom = require('jsdom').jsdom; var exposedProperties = ['window', 'navigator', 'document']; global.document = jsdom(''); global.window = document.defaultView; Object.keys(document.defaultView).forEach((property) => { if (typeof global[property] === 'undefined') { exposedProperties.push(property); global[property] = document.defaultView[property]; } }); global.navigator = { userAgent: 'node.js' }; // var documentRef = document; // process.env.NODE_ENV = 'test'; function noop() { return null; } require.extensions['.css'] = noop; require.extensions['.scss'] = noop; require.extensions['.md'] = noop; require.extensions['.png'] = noop; require.extensions['.svg'] = noop; require.extensions['.jpg'] = noop; require.extensions['.jpeg'] = noop; require.extensions['.gif'] = noop;
Test code. 测试代码。 This is very simple test and it fails.(
这是非常简单的测试,但失败了。
Editing. 编辑中。 My component code is below.
我的组件代码如下。
import React from 'react'; import {mount, shallow} from 'enzyme'; import {expect} from 'chai'; import Header from '../../src/components/Header'; describe ('<Header />', () => { it('should have a logo image', function() { const wrapper = mount(<Header />); expect(wrapper.find('img')).to.have.length(1); }); });
at WithStyles.componentWillMount (node_modules\\isomorphic-style-loader\\lib\\withStyles.j at node_modules\\react-dom\\lib\\ReactCompositeComponent.js:348:23 at measureLifeCyclePerf (node_modules\\react-dom\\lib\\ReactCompositeComponent.js:75:12) 在WithStyles.componentWillMount(在node_modules \\ react-dom \\ lib \\ ReactCompositeComponent.js:node:modules \\ isomorphic-style-loader \\ lib \\ withStyles.j在measureLifeCyclePerf((node_modules \\ react-dom \\ lib \\ ReactCompositeComponent.js:75 :12)
class Header extends React.Component { static propTypes = { intl: intlShape.isRequired, }; componentDidMount() { this.searchbox.refs.queryField.focus(); } render() { return ( <div className={s.root}> <div className={s.container}> <img className={s.alphaRibbon} src={alphaRibbon} alt="alpha" width="50px" /> <Link className={s.brand} to="/"> <img src={logoUrl2x} srcSet={`${logoUrl2x} 2x`} width="67" height="38" alt="8kolo" /> <span className={s.brandTxt}> <FormattedMessage {...messages.brand} /> </span> </Link> <Navigation className={s.nav} /> <div className={s.search}> <SearchBoxRedirect ref={sb => { this.searchbox = sb; }} hitsRoute="/" searchOnChange placeholder={this.props.intl.formatMessage(messages.searchPlaceholder)} prefixQueryFields={['full_name']} /> </div> {/* <LanguageSwitcher /> */} </div> {/* <div className={s.banner}> <div className={s.container}> <FormattedMessage tagName="p" {...messages.bannerDesc} /> </div> </div>*/} </div> ); } } export default withStyles(s)(injectIntl(Header));
You're using webpack with isomorphic-style-loader to resolve dependencies to CSS files, but you're not using webpack in your test setup, right? 您正在将webpack与isomorphic-style-loader一起使用来解析对CSS文件的依赖性,但是您没有在测试设置中使用webpack,对吗? To emulate the style loading in your test setup, try using css-modules-require-hook .
要在测试设置中模拟样式加载,请尝试使用css-modules-require-hook 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.