我是React的新手,对所有的测试库感到困惑。虽然我的测试代码可以工作,但似乎需要调用react-test-renderer
中的create()
才能使用其toMatchSnapshot()
,并且需要调用@testing-library/react
中的render()
才能使用其断言函数,如getByLabelText()
,这似乎有些重复。
import {render} from '@testing-library/react';
import {act, create} from 'react-test-renderer';
it('renders a login screen', () => {
let mockInitialState: AppState = {
auth: initialAuthState
};
let component = <Root initialState={mockInitialState}/>;
let tree = null;
act(() => {
tree = create(component);
});
expect(tree).toMatchSnapshot();
const {getByLabelText, getByText} = render(component);
expect(getByLabelText(/Email Address.*/));
expect(getByLabelText(/Password*/));
expect(getByText('Sign in'));
});
作为新手,我很难理解所有这些React库之间的区别。但是我在想一定有一种更简单的方法。如何简化我的测试代码,以便我只需调用一个渲染组件的函数,以便进行快照测试和更具体的断言?
onClick
在通过HTML DOM渲染时被剥离了?因此使用虚拟DOM进行快照可能是一个好主意。 - zanona