React Jest 测试无法读取未定义的属性“路径名”
Posted
技术标签:
【中文标题】React Jest 测试无法读取未定义的属性“路径名”【英文标题】:React Jest test Cannot read property 'pathname' of undefined 【发布时间】:2017-12-30 11:17:47 【问题描述】:不知道为什么在我的简单 Main.test 文件中出现此错误。
Main.js的构造函数
export class Main extends Component
constructor(props)
super(props);
this.state =
location: splitString(props.location.pathname, '/dashboard/')
if (R.isEmpty(props.view))
isViewServices(this.state.location)
? this.props.gotoServicesView()
: this.props.gotoUsersView()
Main.test
import React from 'react'
import * as enzyme from 'enzyme'
import toJson from 'enzyme-to-json'
import Main from './Main'
import Sidebar from '../../components/Common/sidebar'
const main = enzyme.shallow(<Main />);
describe('<Main /> component', () =>
it('should render', () =>
const tree = toJson(main);
expect(tree).toMatchSnapshot();
);
it('contains the Sidebar', () =>
expect(main.find(Sidebar).length).toBe(1);
);
);
有没有办法模拟“路径名”?
【问题讨论】:
【参考方案1】:看来你可能有一些错误是在你的测试中你没有通过任何道具。
另一个来自您的构造函数中访问this.props
。
请参阅您的 if
声明,但我会在此处明确修复
if (R.isEmpty(props.view))
isViewServices(this.state.location)
? props.gotoServicesView()
: props.gotoUsersView()
在 Main.test 中
const location = pathname: '/dashboard/' ;
const main = enzyme.shallow(<Main location= location />);
【讨论】:
啊,知道了。我需要在我的 Main.test 中创建一个假对象,对吗?称为 props 的对象,包含location.pathname
?
@LeonGaban,是的,该组件可能使用的任何属性。以上是关于React Jest 测试无法读取未定义的属性“路径名”的主要内容,如果未能解决你的问题,请参考以下文章
为啥这些 Jest 测试失败了? TypeError:无法读取未定义的属性“应用”
测试套件无法运行 TypeError:无法读取未定义的属性“默认”
TypeError:无法读取未定义的属性“viewManagersNames” - 将 Jest 和 Enzyme 与 React Native TypeScript 包集成