我是Cypress.io和TypeScript的新手。因此,我在这里不了解某些内容。
我的代码:
//Test
describe('TEST description', function () {
it('newJobCreation', function () {
//Some code 1
var numberBefore = cy.get('#idOfItem')
var _numberBefore = +numberBefore
//Some code 2
var numberAfter = cy.get('#idOfItem')
var _numberAfter = +numberAfter
//Assertion
expect(_numberBefore-1).equals(_numberAfter) //Same result if I use: assert.equal(_numberBefore-1, _numberAfter)
})
})
让我们说//某些代码2更改后成为_numberAfter之后的_numberBefore。我想断言这个数字减少了1。
在Cypress.io中运行测试后,出现错误消息:
期望NaN等于NaN
它失败了。
问题:
为什么在所有代码执行完后我的断言没有调用?为什么在测试开始时调用它?
答案 0 :(得分:1)
Cypress一次将所有命令异步排队。这意味着
let elem = cy.get("#elem");
// attempt to do something with returned element...
不起作用。 cy.get()
仅告诉赛普拉斯将get()
命令添加到最终要运行的命令列表中。它不会立即运行命令。
.then()
提供了一个不错的选择-您可以使用它来排队一些Javascript,以便在运行命令时运行它,例如:
cy.get("#elem1").then(elem1 => {
// elem1 is the underlying DOM object.
// You can put regular javascript code here:
console.log("This will happen when the queued .then() command is run");
// You can also put more Cypress commands here, like so:
cy.get("#elem2").should(elem2 => {
expect(elem1.someProperty).to.equal(elem2.someProperty);
});
});
请注意,.should(() => {})
的行为与.then()
相似,只是如果任何包含的断言失败,它将重试。
有关将两个元素的值相互比较的更多信息,请参见here,有关赛普拉斯中异步命令排队的一般概念的更多信息,请参见this doc page。