Reactjs React Native中的玩笑测试/模拟时刻

Reactjs React Native中的玩笑测试/模拟时刻,reactjs,unit-testing,react-native,momentjs,jestjs,Reactjs,Unit Testing,React Native,Momentjs,Jestjs,我正在尝试对我的React本机组件进行一些测试,该组件使用moment.js作为日期选择器。我在测试/模拟mock moment.js时遇到了问题,我想知道是否可以得到任何示例/指针。我尝试测试的两个功能如下: setDate=(newDate)=>{ this.setState({selectedDate:moment(newDate)}); } handleOnPress=()=>{ this.props.onModalButtonPress(this.state.selectedDate

我正在尝试对我的React本机组件进行一些测试,该组件使用moment.js作为日期选择器。我在测试/模拟mock moment.js时遇到了问题,我想知道是否可以得到任何示例/指针。我尝试测试的两个功能如下:

setDate=(newDate)=>{
this.setState({selectedDate:moment(newDate)});
}
handleOnPress=()=>{
this.props.onModalButtonPress(this.state.selectedDate.unix());

}
您可以尝试将模拟的
矩.js
放入
\uuuuuuuuuuuuuuuuu mocks\uuuuuuuuu
文件夹(测试文件旁边),其中包含以下内容(手动模拟):

const moment=require.requireActual('moment');
导出默认值(时间戳=0)=>{
返回时刻(时间戳);
}
然后Jest会在你的测试中使用它。上面将确保调用
moment()
将在同一时间返回。这有助于测试比较

如果您使用的是一些静态方法,如
weekdaysShort
,则需要修改mock以包括此方法(以及您可能使用的任何其他方法):

const moment=require.requireActual('moment');
常量mockedMoment=(时间戳=0)=>{
返回时刻(时间戳);
};
mockedMoment.weekdaysShort=()=>[
“太阳”,
“周一”,
“星期二”,
“Wed”,
“Thu”,
“星期五”,
“Sat”,
];
导出默认mockedMoment;