【问题标题】:Jest testing/mocking Moment in React NativeReact Native 中的笑话测试/模拟时刻
【发布时间】:2018-07-15 21:48:05
【问题描述】:

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

setDate = (newDate) => {
    this.setState({ selectedDate: moment(newDate) });
}

handleOnPress = () => {
    this.props.onModalButtonPress(this.state.selectedDate.unix());
}

【问题讨论】:

标签: reactjs unit-testing react-native momentjs jestjs


【解决方案1】:

您可以尝试将具有以下内容的模拟 moment.js 放入 __mocks__ 文件夹(测试文件旁边)(手动模拟):

const moment = require.requireActual('moment');

export default (timestamp=0) => {
    return moment(timestamp);
}

然后 Jest 将在您的测试中使用它。以上将确保调用moment() 将同时返回。这有助于测试比较。

如果您使用一些静态方法,例如weekdaysShort,那么您需要修改模拟以包含它(以及您可能使用过的任何其他方法):

const moment = require.requireActual('moment');

const mockedMoment = (timestamp=0) => {
    return moment(timestamp);
};
mockedMoment.weekdaysShort = () => [
    "Sun",
    "Mon",
    "Tue",
    "Wed",
    "Thu",
    "Fri",
    "Sat",
];
export default mockedMoment;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-11
    • 2019-03-26
    • 2019-10-18
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    相关资源
    最近更新 更多