Pau*_*enk 9 javascript reactjs jestjs react-testing-library
我正在尝试测试一个 React 服务器组件,它返回一个 Promise。Jest 中的标准render方法不喜欢这样。
我检查了类似的问题,但所有问题都 > 4 岁,并且正在处理componentDidMount等。
/// Home.tsx
async function Home(props: Props) : Promise<JSX.Element> {
// call async functions to setup component
}
/// home.test.ts
describe('Home', () => {
it('renders a heading', () => {
render(<Home />);
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
'Home' can not be used as a JSX element
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题有什么建议吗?一个明显的解决方案是让组件不返回 Promise,但我正在编写代码来满足不理想的测试框架。
小智 2
在查看赏金时发生了这种情况。我不确定您已经尝试过什么,但我也许可以提供帮助。显然你知道 Jest 不能返回 Promise。然而,使用 test-utils 中的 act 可能有一个解决方法。尝试这样的事情
import { render } from '@testing-library/react';
import { act } from 'react-dom/test-utils';
describe('Home', () => {
it('renders a heading', async () => {
await act(async () => {
render(await Home());
});
});
});
Run Code Online (Sandbox Code Playgroud)