Javascript 如何用Jest模拟和测试时刻数据格式化程序
我正在使用dateFormatter.js文件中的以下函数将日期格式从DD-MM-YYYY更改为ISO(时间-日期)格式: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” 但是试着用玩笑来测试这一点会让我的测试失败。实际结果如下所
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
}
}