Слияние кода завершено, страница обновится автоматически
import { getQueriesForElement, prettyDOM } from '@testing-library/dom';
import Nerv, { unmountComponentAtNode, render as taroRender } from 'nervjs';
global.Nerv = Nerv;
export * from '@testing-library/dom';
interface RenderOptions {
container?: HTMLElement;
target?: HTMLElement;
[key: string]: any;
}
type Container = {
target: HTMLElement;
component: any;
};
const mountedContainers: Map<HTMLElement, Container> = new Map();
const cleanupAtContainer = (container: Container) => {
const { target } = container;
unmountComponentAtNode(target);
if (target.parentNode) {
target.parentNode.removeChild(target);
}
mountedContainers.delete(target);
};
export const render = (
Component,
{
container = document.body,
target = container.appendChild(document.createElement('div')),
}: RenderOptions = {},
) => {
const component = taroRender(Component, target);
mountedContainers.set(target, { target, component });
return {
get component() {
return component;
},
debug: (el = container) => {
console.log(prettyDOM(el));
},
container,
unmount: () => cleanupAtContainer({ target, component }),
...getQueriesForElement(target),
};
};
export const cleanup = () => {
mountedContainers.forEach(cleanupAtContainer);
};
export default render;
export * from '@testing-library/dom';
export function flush(fn?: () => void) {
return new Promise(function(resolve) {
fn && fn();
setTimeout(() => {
resolve();
}, 10); // # TODO: tricky for useEffect
});
}
export function act(fn?: () => void) {
fn && fn();
mountedContainers.forEach(({component}) => {
component.forceUpdate();
})
}
// if we're running in a test runner that supports afterEach
// then we'll automatically run cleanup afterEach test
// this ensures that tests run in isolation from each other
// if you don't like this then either import the `pure` module
// or set the TTL_SKIP_AUTO_CLEANUP env variable to 'true'.
// inspired from react-testing-library
if (typeof afterEach === 'function' && !process.env.TTL_SKIP_AUTO_CLEANUP) {
afterEach(() => {
cleanup();
});
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )