我试图为一个简单的React组件编写一个简单的测试,并且我想使用Jest来确认当我使用enzyme模拟点击时,一个函数已经被调用。根据Jest文档,我应该能够使用spyOn
来实现这一点:spyOn。
然而,当我尝试这样做时,我不断收到TypeError: Cannot read property '_isMockFunction' of undefined
的错误,这意味着我的spy未定义。我的代码看起来像这样:
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
myClickFunc = () => {
console.log('clickity clickcty')
}
render() {
return (
<div className="App">
<div className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h2>Welcome to React</h2>
</div>
<p className="App-intro" onClick={this.myClickFunc}>
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
}
}
export default App;
并且在我的测试文件中:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { shallow, mount, render } from 'enzyme'
describe('my sweet test', () => {
it('clicks it', () => {
const spy = jest.spyOn(App, 'myClickFunc')
const app = shallow(<App />)
const p = app.find('.App-intro')
p.simulate('click')
expect(spy).toHaveBeenCalled()
})
})
有人能洞察我做错了什么吗?
spyOn
不工作,还是其他问题?你的package.json
是否正确配置了你如何配置jest?关于你的陈述有很多问题。 - taystackspyOn
来监视不接受props
的组件,或者没有state
的纯组件。对于我来说,监视一个prototype
已经成功了100%。 - taystackReact.Component.prototype
后面的代码块是否表现出与第一个代码块不同的东西?” - ZAD-Mantesting-library/react
。 - taystack