Cypress - 用 dayjs 替换 moment()
Cypress - replaceing moment() with dayjs
我在从已弃用的 Moment 转到 Cypress 中的 DayJS 时遇到了语言环境问题。
原来的 Moment() 用法:
public moment(): Moment {
const moment = Cypress.moment();
moment.locale("nb-NO");
return moment;
}
const in2Months = moment().add(2, "months");
这很好用,例如“March”被“Mars”取代了。
但是,当尝试以与 days.js 相同的方式使用它时,区域设置没有改变:
public day() {
return dayjs().locale('nb-NO');
}
const in2Months = page.day().add(2, "months");
这里的结果仍然是“三月”。我试过只使用 'no' 作为语言环境,结果相同。
我在这里错过了什么?
更新:
根据以下答案:
import dayjs from "dayjs";
import 'dayjs/locale/nb'
const in2Months = dayjs().locale('nb').add(2, 'Month');
cy.log(in2monthstoString());
RESULT: Mon, 28 Mar 2022 12:39:29 GMT
不是本地格式。
此外,尝试 .month() 的任何变体,我总能找到月份数的结果。我不知道名字。
如Days JS github readme所述,您必须导入您打算使用的国际化,默认情况下不会包含它。所以我写了一个简单的程序来检查这个并且它有效
const dayjs = require('dayjs')
import 'dayjs/locale/nb'
describe('SO Ques', () => {
it('SO Ques', () => {
cy.log(dayjs().locale('nb').add(2, 'Month').format('MMMM'))
})
})
测试运行者:
所以你的程序应该是这样的:
const dayjs = require('dayjs')
import 'dayjs/locale/nb'
public day() {
return dayjs().locale('nb');
}
const in2Months = page.day().add(2, 'Month').format('MMMM');
您可以评估一个函数中的所有值,然后 return 它,然后像这样在您的测试中使用它:
function date() {
return {
day: dayjs().locale('nb').add(2, 'Month').format('DD'),
month: dayjs().locale('nb').add(2, 'Month').format('MMMM'),
year: dayjs().locale('nb').add(2, 'Month').format('YYYY'),
};
}
date().day //28
date().month //mars
date().year //2022
我在从已弃用的 Moment 转到 Cypress 中的 DayJS 时遇到了语言环境问题。
原来的 Moment() 用法:
public moment(): Moment {
const moment = Cypress.moment();
moment.locale("nb-NO");
return moment;
}
const in2Months = moment().add(2, "months");
这很好用,例如“March”被“Mars”取代了。
但是,当尝试以与 days.js 相同的方式使用它时,区域设置没有改变:
public day() {
return dayjs().locale('nb-NO');
}
const in2Months = page.day().add(2, "months");
这里的结果仍然是“三月”。我试过只使用 'no' 作为语言环境,结果相同。
我在这里错过了什么?
更新: 根据以下答案:
import dayjs from "dayjs";
import 'dayjs/locale/nb'
const in2Months = dayjs().locale('nb').add(2, 'Month');
cy.log(in2monthstoString());
RESULT: Mon, 28 Mar 2022 12:39:29 GMT
不是本地格式。
此外,尝试 .month() 的任何变体,我总能找到月份数的结果。我不知道名字。
如Days JS github readme所述,您必须导入您打算使用的国际化,默认情况下不会包含它。所以我写了一个简单的程序来检查这个并且它有效
const dayjs = require('dayjs')
import 'dayjs/locale/nb'
describe('SO Ques', () => {
it('SO Ques', () => {
cy.log(dayjs().locale('nb').add(2, 'Month').format('MMMM'))
})
})
测试运行者:
所以你的程序应该是这样的:
const dayjs = require('dayjs')
import 'dayjs/locale/nb'
public day() {
return dayjs().locale('nb');
}
const in2Months = page.day().add(2, 'Month').format('MMMM');
您可以评估一个函数中的所有值,然后 return 它,然后像这样在您的测试中使用它:
function date() {
return {
day: dayjs().locale('nb').add(2, 'Month').format('DD'),
month: dayjs().locale('nb').add(2, 'Month').format('MMMM'),
year: dayjs().locale('nb').add(2, 'Month').format('YYYY'),
};
}
date().day //28
date().month //mars
date().year //2022