При тестировании приложения Preact с использованием preact-iso для маршрутизации с видовым и JSDOM, компоненты, отображаемые как [объект объекта] в выходе отладки. Важно, что Console.log операторы, размещенные в этих маршрутизированных компонентах (или их прямых обертках), не стреляют, что указывает на то, что маршрутизатор не соответствует маршрутам или созданию создания компонентов.
Код: Выделить всё
main_app.tsx
Код: Выделить всё
import { h } from 'preact';
import { Router, Route } from 'preact-iso';
const LogComponent = (props: { id: string }) => {
console.log(`LogComponent ID: ${props.id}`); // This log doesn't fire
return {props.id};
};
const Page = (props: any) => ;
export const App = () => ;
< /code>
< /li>
[*] [b] тест (main_app.test.tsx
Код: Выделить всё
import { render, screen } from '@testing-library/preact';
import { MemoryRouter } from 'preact-iso/router'; // Initially tried MemoryRouter
import { App } from './main_app';
it('renders /test', () => {
render();
screen.debug(); // Shows [object Object]
expect(screen.getByTestId('routed')).toBeInTheDocument(); // Fails
});
Ожидаемое поведение
console.log Inside logComponent должен уволить, и Screen.debug () должен отображать рендерированный HTML (например, test-page ). Утверждение теста должно пройти. < /P>
фактическое поведение < /strong>
Код: Выделить всё
screen.debug()
Подробнее здесь: https://stackoverflow.com/questions/796 ... test-jsdom