我开始学习Jest,我创建了这个测试。但是当我运行它时,我会收到以下信息。
我是否以错误的方式将道具传递给AppComponent?
TypeError:无法设置未定义的属性'props'
App.js:
const { store } = this.props;
return (
<div>
<h2 className={css(styles.hover)}>Welcome to the { store.name } project!</h2>
<h3>This project is { store.description }.</h3>
<MyComponent store={store} />
</div>
);
应用-test.js:
const storeProp = {
name: 'Reaxor',
description: 'Hello'
}
describe('App', () => {
it('returns the correct text', () => {
// Render a checkbox with label in the document
const app = TestUtils.renderIntoDocument(
<App store={storeProp} />
);
const appNode = ReactDOM.findDOMNode(app);
const h2 = TestUtils.findRenderedDOMComponentWithTag(app, 'h2')
const h3 = TestUtils.findRenderedDOMComponentWithTag(app, 'h3')
expect(h2.textContent).toEqual('Welcome to the Reaxor project!');
expect(h3.textContent).toEqual('This project is Hello.')
});
});
答案 0 :(得分:2)
在我看来,有些东西被嘲笑,不应该被嘲笑。您可以尝试在配置中禁用自动插锁"automock": false
,看看该模型是否适合您:)
答案 1 :(得分:0)
不幸的是,我还无法添加评论,但我想评论一下:行号有助于(甚至更好的是堆栈跟踪)。是吗
const app = TestUtils.renderIntoDocument(
<App store={storeProp} />
);
发生了错误?
您还需要提供有关App.js的更多上下文。
React内部创建了一个&#39;道具&#39;作为对象的参数,并将道具作为参数粘贴在它上面。它试图将这样做放在未定义的东西上。这表明你如何进入<App />
会出现问题。
至于你的实际问题,不,你没有错误地传递道具。那部分语法是正确的。
答案 2 :(得分:0)
它是App.js的完整版本吗? 您应该使用类表示法来使用this.props。 如果你使用函数表示法,只需要道具。