在 Nextjs 中使用 React/Enzyme/Jest 时是否可以获取整页 html?
Is it possible to get the full page html when using React/Enzyme/Jest with Nextjs?
我有一个看起来像这样的 React 组件:
import React from 'react';
import Head from 'next/head';
export default class extends React.Component {
static defaultProps = {
language: 'en',
country: 'us'
};
...
render () {
const language = this.props.language || 'en';
const country = this.props.country || 'us';
return (
<div className="edf-header">
<div className="desktop-header"></div>
<div className="mobile-header"></div>
<Head>
<script dangerouslySetInnerHTML={{__html: `
var secure = "//local-www.hjjkashdkjfh.com";
var perfConfig = {
LOCALE: '${language}_${country}',
我想通过测试确认 perfConfig
构建正确。我正在测试它:
import React from 'react';
import Enzyme from 'enzyme';
import Foo from '../../components/Foo';
import Adapter from 'enzyme-adapter-react-16';
import enzymify from 'expect-enzyme';
import Head from 'next/head';
const {mount, shallow, render} = Enzyme;
Enzyme.configure({adapter: new Adapter()});
expect.extend(enzymify());
...
it('renders correct nsgConfig', () => {
const foo = render(<Foo country='ca' language='fr'/>);
console.dir(foo.html());
expect(foo.find('Head')).toExist();
expect(foo.html().indexOf("LOCALE: 'fr_ca'")).toBeGreaterThan(0);
});
问题是 html 不包含 head 标签。 html 有 div,仅此而已。
如何让 Next/Enzyme 在这里协同工作以呈现整个页面?尝试过浅而没有运气。
加载页面后,Head 组件会将其子组件添加到实际组件中。您必须从 _document 组件开始渲染整个页面。在我的测试中,mount 似乎使用了一个 "div" 标签,它会在其中插入组件并抱怨你是否实际安装了一个 "head" 组件,所以我不确定这是否可能。
我有一个看起来像这样的 React 组件:
import React from 'react';
import Head from 'next/head';
export default class extends React.Component {
static defaultProps = {
language: 'en',
country: 'us'
};
...
render () {
const language = this.props.language || 'en';
const country = this.props.country || 'us';
return (
<div className="edf-header">
<div className="desktop-header"></div>
<div className="mobile-header"></div>
<Head>
<script dangerouslySetInnerHTML={{__html: `
var secure = "//local-www.hjjkashdkjfh.com";
var perfConfig = {
LOCALE: '${language}_${country}',
我想通过测试确认 perfConfig
构建正确。我正在测试它:
import React from 'react';
import Enzyme from 'enzyme';
import Foo from '../../components/Foo';
import Adapter from 'enzyme-adapter-react-16';
import enzymify from 'expect-enzyme';
import Head from 'next/head';
const {mount, shallow, render} = Enzyme;
Enzyme.configure({adapter: new Adapter()});
expect.extend(enzymify());
...
it('renders correct nsgConfig', () => {
const foo = render(<Foo country='ca' language='fr'/>);
console.dir(foo.html());
expect(foo.find('Head')).toExist();
expect(foo.html().indexOf("LOCALE: 'fr_ca'")).toBeGreaterThan(0);
});
问题是 html 不包含 head 标签。 html 有 div,仅此而已。
如何让 Next/Enzyme 在这里协同工作以呈现整个页面?尝试过浅而没有运气。
加载页面后,Head 组件会将其子组件添加到实际组件中。您必须从 _document 组件开始渲染整个页面。在我的测试中,mount 似乎使用了一个 "div" 标签,它会在其中插入组件并抱怨你是否实际安装了一个 "head" 组件,所以我不确定这是否可能。