首先。我有意重新学习JS/Cypress,并有意重新从基础开始,所以提前道歉。
我目前正在使用Cypress进行REST API测试。我正在从现有的Ruby/Selenium框架迁移测试,我想使用类似于编写Ruby函数的东西来清理我的代码,因为我目前正在复制代码。
例如:我有一个代码块,它生成一个日期,过去365天(在这种情况下,使用ISOString是有原因的(
var date = new Date();
date.setDate(date.getDate() - 365)
var minDate = date.toISOString().split('T')[0]
我想做一些类似的事情
Cypress.Command.add('dateGen', () => {
var date = new Date();
date.setDate(date.getDate() - 365)
var minDate = date.toISOString().split('T')[0]
})
并调用它。在这种情况下,我想使用类似的方法将它调用到我的测试中(请原谅语法不正确,我只是作为一个类似(Ruby/JS(的示例来做这件事(:var date = cy.dateGen
然而,在任何js/cypric友好的组合中运行它都会失败,因为命令不返回值。
我已经设置为在index.js
等中使用命令,所以这个位不会给我带来任何问题。我已经在对不返回值的东西使用命令了,所以我知道我做得很正确。
我使用以下方法对其进行了排序:
Cypress.Commands.add('dateGenerator', (days) => {
var newDate = new Date();
newDate.setDate(newDate.getDate() - days)
var date = newDate.toISOString().split('T')[0]
return date
})
然后通过调用
cy.dateGenerator(noOfDays)
.then((date) => {
var minDate = date
}
我缺少的是return date
和我在测试代码中过早地关闭了块。