Javascript 如何在API调用中使用当前日期/时间?
我有一个进行API调用的测试,我要传递的正文的一个必要部分是时间戳。除了最后一个测试之外,整个测试都在运行(如果我在每次测试执行之前手动设置日期/时间,则测试成功) 我一直在尝试设置这样一个变量:Javascript 如何在API调用中使用当前日期/时间?,javascript,automated-tests,cypress,Javascript,Automated Tests,Cypress,我有一个进行API调用的测试,我要传递的正文的一个必要部分是时间戳。除了最后一个测试之外,整个测试都在运行(如果我在每次测试执行之前手动设置日期/时间,则测试成功) 我一直在尝试设置这样一个变量: const todaysDate = Cypress.moment().format('YYYY-MM-DDTHH:MM:SS-07:00'); 但是我不知道如何在API调用中使用它。API参数的格式如下: "offDateTime": "YYYY-MM-DDTHH:MM:SS-07:00" 有人
const todaysDate = Cypress.moment().format('YYYY-MM-DDTHH:MM:SS-07:00');
但是我不知道如何在API调用中使用它。API参数的格式如下:
"offDateTime": "YYYY-MM-DDTHH:MM:SS-07:00"
有人能帮我吗?我想说的是,根据api的需要调整给定的参数
const todaysDate = Cypress.moment().format('YYYY-MM-DDTHH:MM:SS-07:00');
如何在API调用中使用取决于您如何创建调用以及案例中的具体需求。当您的API使用某种JSON来运行时,它通常看起来像这样
const date = new Date();
const timestamp = date.getTime();
const publicKey = '<publickey>';
const privateKey = '<privateKey>'
cy.request(`/v1/public/orders?ts=${timestamp}&apikey=${publicKey}&hash=${hash}`)
.then((response) => {
expect(response.body).to.have.property('offDateTime', todaysDate )
})
const date=新日期();
const timestamp=date.getTime();
常量公钥=“”;
const privateKey=“”
cy.request(`/v1/public/orders?ts=${timestamp}&apikey=${publicKey}&hash=${hash}`)
。然后((响应)=>{
expect(response.body).to.have.property('offDateTime',todaysDate)
})
此snipplet将使用
-cv.visit(url)
声明对baseUrl上现有文件或显式给定url的请求。若文件引用了cypress.json配置文件中的baseUrl,那个么该url将是[baseUrl]/v1/public/orders
。剩下的就像您将AJAX请求设置到此文件一样,您将从该文件中获得响应,并且可以尝试捕获预期值是否存在 要检索将来的日期,您可以轻松地使用moment.js cypress自动包含
如何添加未来日期的快速示例:
var twoDaysForward = new Cypress.moment().add(2, 'day');
document.write(twoDaysForward.format('YYYY-MM-DDTHH:MM:SS-07:00');
分钟也一样
twoDaysForward.add(minutes, 'minutes');
如果格式为
YYYY-MM-DDTHH:MM:SS
为什么要使用yyy-MM-DDTHH:MM:SS-07:00
,可能在API调用之前或之后更改/摆弄时区偏移量,这是什么意思?使用?或者从您正在测试的客户端应用程序?你试过什么,有什么具体问题吗?我错了,我漏掉了“-07:00”部分。修复了原始帖子。@jonrsharpe时间戳是对我的端点的调用中的一个必需参数,必须在将来,例如,从当前时间和日期算起+1分钟。是的,我正在使用cy.request,这是我在其他测试中使用的,这里的问题是需要时间戳以实际的当前时间和日期为基础。这在问题中一点也不清楚,请描述实际的问题。如果您想调整时间,您是否阅读了时刻文档?