Я получил ответ от Зиада Сааба по адресу Codementor.io:
create()
позволяет тестировать виртуальный DOM (т. Е. «React DOM»)
render()
происходит из библиотеки реагирующего тестирования и отображает ваше дерево, но также позволяет вам получить все утверждения get * (). Это позволяет вам проверять DOM.
Вот как можно упростить код:
it('renders a login screen', () => {
let mockInitialState: AppState = {
auth: initialAuthState
};
const {container, getByLabelText, getByText} = render(<Root initialState={mockInitialState}/>);
expect(container.firstChild).toMatchSnapshot();
expect(getByLabelText(/Email Address.*/));
expect(getByLabelText(/Password*/));
expect(getByText('Sign in'));
});
Зиад, дайте мне знать, что не было причин иметь act()
, это было что-то, чтобы обойти ошибку в create()
. Теперь, когда код не используется create()
, нет необходимости в act()
.
. В результате мой снимок теперь содержит class
вместо className
, потому что class
- это то, что находится вфактический HTML DOM, тогда как className
является его эквивалентом в «Виртуальном DOM» React.
(До) Снимок с create()
на основе Виртуального DOM React:
className="MuiBox-root MuiBox-root-256"
(После) Снимокс render()
на основе HTML DOM:
class="MuiBox-root MuiBox-root-256"