Я хочу проверить этот класс
export class FancyStuff extends React.Component<Props> {
componentWillMount() {
this.customBody = this.props.customBody || document.body;
...
Как вы можете видеть, если я не укажу свойство customBody
, компонент попытается получить тело документа.
Однако для целей тестирования мне нужно убедиться, что document.body
это макет.На этом этапе у меня нет возможности реорганизовать код для зависимости, чтобы внедрить объект documen
t.
Можно ли в любом случае переопределить этот document.body
глобально в моем модульном тесте?
Я пробовал что-то вроде document = mockWindow.document;
перед тем, как смонтировать FancyStuff
:
beforeEach(() => {
const mockWindow = {
document: {
body: {
appendChild: jest.fn(),
insertBefore: jest.fn(),
iamabody: jest.fn(),
},
}
jest.spyOn(window, 'open').mockReturnValue(mockWindow);
it('test fancystuff', () => {
document = mockWindow.document; // What I tried
mount((
<FancyStuffContainer/> // it uses FancyStuff
))
, но я не могу переопределить document.body
.
Как я могу сделать это в шутку?
Я использую следующие версии:
"jest": "^23.2.0",
"jest-junit": "^5.1.0",