React的新手,如果这是一个无知的问题,请提前道歉。我使用componentWillReceiveProps来执行渲染后的函数。该函数作为prop传递。尝试编写一个单元测试来显示传入的函数被调用,但是当我在测试中渲染组件时,似乎没有调用componentWillReceiveProps。它在浏览器中运行应用程序时有效,但不在测试中。
以下是测试:
it('should call function \'selectAll\' when isDefaultSelectAll is true and component is rendered.', ()=> {
const selectAllMock = jest.genMockFunction();
const isDefaultSelectAll = true;
component = TestUtils.renderIntoDocument(<MyComponent {isDefaultSelectAll, selectAllMock} />);;
expect(selectAllMock.mock.calls.length).toBe(1);
});
这是正在测试的代码:
componentWillReceiveProps(nextProps) {
console.log('GOT HERE');
if (nextProps.isDefaultSelectAll === true) {
nextProps.selectAll();
}
}
即使是日志声明似乎也没有被击中,我也不确定为什么。谷歌搜索没有得出答案。
编辑第一个答案 - 尝试按如下方式进行第二次渲染,但仍然没有运气:
const isDefaultSelectAll = false;
component = TestUtils.renderIntoDocument(<MyComponent {isDefaultSelectAll, selectAllMock} />);
isDefaultSelectAll = true;
component = TestUtils.renderIntoDocument(<MyComponent {isDefaultSelectAll, selectAllMock} />);
答案 0 :(得分:0)
componentWillReceiveProps
,如文档中所述:
https://facebook.github.io/react/docs/component-specs.html#updating-componentwillreceiveprops
尝试使用其他生命周期方法或在测试中重新渲染组件。