Javascript 如何用Jest模拟和测试时刻数据格式化程序

Javascript 如何用Jest模拟和测试时刻数据格式化程序,javascript,jestjs,momentjs,Javascript,Jestjs,Momentjs,我正在使用dateFormatter.js文件中的以下函数将日期格式从DD-MM-YYYY更改为ISO(时间-日期)格式: import moment from 'moment'; export const getFormattedDate = (date) => moment(date, 'DD-MM-YYYY'); 测试: 函数retruns formattedDate=“2021-02-26T23:00:00.000Z” 但是试着用玩笑来测试这一点会让我的测试失败。实际结果如下所

我正在使用dateFormatter.js文件中的以下函数将日期格式从DD-MM-YYYY更改为ISO(时间-日期)格式:

import moment from 'moment';

export const getFormattedDate = (date) => moment(date, 'DD-MM-YYYY');
测试:

函数retruns formattedDate=“2021-02-26T23:00:00.000Z”

但是试着用玩笑来测试这一点会让我的测试失败。实际结果如下所示:

{
  "_d": {},
  "_f": "DD-MM-YYYY",
  "_i": "27-02-2021",
  "_isAMomentObject": true,
  "_isUTC": false,
  "_isValid": true,
  "_locale": {
    "_abbr": "en",
    "_calendar": {
      "lastDay": "[Yesterday at] LT",
      "lastWeek": "[Last] dddd [at] LT",
      "nextDay": "[Tomorrow at] LT",
      "nextWeek": "dddd [at] LT",
      "sameDay": "[Today at] LT",
      "sameElse": "L"
    },
    "_config": {
      "abbr": "en",
      "calendar": "[Circular reference found] Truncated by IDE",
      "dayOfMonthOrdinalParse": {},
      "eras": [
        {
          "abbr": "AD",
          "name": "Anno Domini",
          "narrow": "AD",
          "offset": 1,
          "since": "0001-01-01",
          "until": null
        },
        {
          "abbr": "BC",
          "name": "Before Christ",
          "narrow": "BC",
          "offset": 1,
          "since": "0000-12-31",
          "until": null
        }
      ],
      "invalidDate": "Invalid date",
      "longDateFormat": {
        "L": "MM/DD/YYYY",
        "LL": "MMMM D, YYYY",
        "LLL": "MMMM D, YYYY h:mm A",
        "LLLL": "dddd, MMMM D, YYYY h:mm A",
        "LT": "h:mm A",
        "LTS": "h:mm:ss A"
      },
      "meridiemParse": {},
      "months": [
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
      ],
      "monthsShort": [
        "Jan",
        "Feb",
        "Mar",
        "Apr",
        "May",
        "Jun",
        "Jul",
        "Aug",
        "Sep",
        "Oct",
        "Nov",
        "Dec"
      ],
      "ordinal": {},
      "relativeTime": {
        "M": "a month",
        "MM": "%d months",
        "d": "a day",
        "dd": "%d days",
        "future": "in %s",
        "h": "an hour",
        "hh": "%d hours",
        "m": "a minute",
        "mm": "%d minutes",
        "past": "%s ago",
        "s": "a few seconds",
        "ss": "%d seconds",
        "w": "a week",
        "ww": "%d weeks",
        "y": "a year",
        "yy": "%d years"
      },
      "week": {
        "dow": 0,
        "doy": 6
      },
      "weekdays": [
        "Sunday",
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday",
        "Saturday"
      ],
      "weekdaysMin": [
        "Su",
        "Mo",
        "Tu",
        "We",
        "Th",
        "Fr",
        "Sa"
      ],
      "weekdaysShort": [
        "Sun",
        "Mon",
        "Tue",
        "Wed",
        "Thu",
        "Fri",
        "Sat"
      ]
    },
    "_dayOfMonthOrdinalParse": {},
    "_dayOfMonthOrdinalParseLenient": {},
    "_eras": "[Circular reference found] Truncated by IDE",
    "_invalidDate": "Invalid date",
    "_longDateFormat": "[Circular reference found] Truncated by IDE",
    "_meridiemParse": {},
    "_months": "[Circular reference found] Truncated by IDE",
    "_monthsShort": "[Circular reference found] Truncated by IDE",
    "_relativeTime": "[Circular reference found] Truncated by IDE",
    "_week": "[Circular reference found] Truncated by IDE",
    "_weekdays": "[Circular reference found] Truncated by IDE",
    "_weekdaysMin": "[Circular reference found] Truncated by IDE",
    "_weekdaysShort": "[Circular reference found] Truncated by IDE",
    "ordinal": "[Circular reference found] Truncated by IDE"
  },
  "_pf": {
    "charsLeftOver": 0,
    "empty": false,
    "era": null,
    "invalidEra": null,
    "invalidFormat": false,
    "invalidMonth": null,
    "iso": false,
    "nullInput": false,
    "overflow": -1,
    "parsedDateParts": [
      2021,
      1,
      27
    ],
    "rfc2822": false,
    "unusedInput": [],
    "unusedTokens": [],
    "userInvalidated": false,
    "weekdayMismatch": false
  }
}

你知道我该如何模拟它以在jest中获得预期的结果吗?

当你调用矩()时,它会返回一个新的矩实例。如果要以某种方式格式化日期,应调用
矩(“27-02-2021”,“DD-MM-YYYY”).toISOString()


您也可以在内部提供
format()!但我对格式没有问题;我从getFormattedDate函数中得到了我所期望的结果。问题是使用jest测试函数。但是
moment()
构造了一个对象来包装日期,并提供了一系列处理日期的方法。请参阅,例如,不确定您想要实现什么,因为当您想要将函数的结果与
'2021-02-26T23:00:00.000Z'
进行比较时,您应该从函数中返回类似的内容,或者对由函数
getFormattedDate('27-02-2021').format()返回的实例调用
format()
函数。您能更精确地指定要比较的内容吗?执行
矩(“27-02-2021”,“DD-MM-YYYY”)。toISOString()
似乎给出了预期的结果,也解决了这个问题。
{
  "_d": {},
  "_f": "DD-MM-YYYY",
  "_i": "27-02-2021",
  "_isAMomentObject": true,
  "_isUTC": false,
  "_isValid": true,
  "_locale": {
    "_abbr": "en",
    "_calendar": {
      "lastDay": "[Yesterday at] LT",
      "lastWeek": "[Last] dddd [at] LT",
      "nextDay": "[Tomorrow at] LT",
      "nextWeek": "dddd [at] LT",
      "sameDay": "[Today at] LT",
      "sameElse": "L"
    },
    "_config": {
      "abbr": "en",
      "calendar": "[Circular reference found] Truncated by IDE",
      "dayOfMonthOrdinalParse": {},
      "eras": [
        {
          "abbr": "AD",
          "name": "Anno Domini",
          "narrow": "AD",
          "offset": 1,
          "since": "0001-01-01",
          "until": null
        },
        {
          "abbr": "BC",
          "name": "Before Christ",
          "narrow": "BC",
          "offset": 1,
          "since": "0000-12-31",
          "until": null
        }
      ],
      "invalidDate": "Invalid date",
      "longDateFormat": {
        "L": "MM/DD/YYYY",
        "LL": "MMMM D, YYYY",
        "LLL": "MMMM D, YYYY h:mm A",
        "LLLL": "dddd, MMMM D, YYYY h:mm A",
        "LT": "h:mm A",
        "LTS": "h:mm:ss A"
      },
      "meridiemParse": {},
      "months": [
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
      ],
      "monthsShort": [
        "Jan",
        "Feb",
        "Mar",
        "Apr",
        "May",
        "Jun",
        "Jul",
        "Aug",
        "Sep",
        "Oct",
        "Nov",
        "Dec"
      ],
      "ordinal": {},
      "relativeTime": {
        "M": "a month",
        "MM": "%d months",
        "d": "a day",
        "dd": "%d days",
        "future": "in %s",
        "h": "an hour",
        "hh": "%d hours",
        "m": "a minute",
        "mm": "%d minutes",
        "past": "%s ago",
        "s": "a few seconds",
        "ss": "%d seconds",
        "w": "a week",
        "ww": "%d weeks",
        "y": "a year",
        "yy": "%d years"
      },
      "week": {
        "dow": 0,
        "doy": 6
      },
      "weekdays": [
        "Sunday",
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday",
        "Saturday"
      ],
      "weekdaysMin": [
        "Su",
        "Mo",
        "Tu",
        "We",
        "Th",
        "Fr",
        "Sa"
      ],
      "weekdaysShort": [
        "Sun",
        "Mon",
        "Tue",
        "Wed",
        "Thu",
        "Fri",
        "Sat"
      ]
    },
    "_dayOfMonthOrdinalParse": {},
    "_dayOfMonthOrdinalParseLenient": {},
    "_eras": "[Circular reference found] Truncated by IDE",
    "_invalidDate": "Invalid date",
    "_longDateFormat": "[Circular reference found] Truncated by IDE",
    "_meridiemParse": {},
    "_months": "[Circular reference found] Truncated by IDE",
    "_monthsShort": "[Circular reference found] Truncated by IDE",
    "_relativeTime": "[Circular reference found] Truncated by IDE",
    "_week": "[Circular reference found] Truncated by IDE",
    "_weekdays": "[Circular reference found] Truncated by IDE",
    "_weekdaysMin": "[Circular reference found] Truncated by IDE",
    "_weekdaysShort": "[Circular reference found] Truncated by IDE",
    "ordinal": "[Circular reference found] Truncated by IDE"
  },
  "_pf": {
    "charsLeftOver": 0,
    "empty": false,
    "era": null,
    "invalidEra": null,
    "invalidFormat": false,
    "invalidMonth": null,
    "iso": false,
    "nullInput": false,
    "overflow": -1,
    "parsedDateParts": [
      2021,
      1,
      27
    ],
    "rfc2822": false,
    "unusedInput": [],
    "unusedTokens": [],
    "userInvalidated": false,
    "weekdayMismatch": false
  }
}