Cypress if else 条件测试

Cypress if else conditional test

我试图将以下条件包含到我的测试中,但我似乎无法让它工作并收到以下错误,有什么想法吗?

本质上,我想测试输入是否为空:

        cy.get(`[class^='input-module_field']`).eq(0).then(($input) => {
            if ($input.should('have.value', '')) {
                cy.get(`[class^='input-module_field']`).eq(0).should('be.visible').type(foo)
                cy.get(`[class^='input-module_field']`).eq(1).should('be.visible').type(bar)
                cy.get(`[class^='input-module_field']`).eq(2).should('be.visible').type(foo-bar)
                cy.get(`[class^='input-module_field']`).eq(3).should('be.visible').type(foo-bar-foo)
            } else {
                cy.get(`[class^='input-module_field']`).eq(1).should('be.visible').type(bar)
                cy.get(`[class^='input-module_field']`).eq(2).should('be.visible').type(foo-bar)
                cy.get(`[class^='input-module_field']`).eq(3).should('be.visible').type(foo-bar-foo)
            }
   })

我得到的错误:

$input.should is not a function

当从 .then() 产生时,$input 变量只是一个 JQuery 元素,不能使用 Cypress 命令。在这种情况下,即使使用赛普拉斯命令,例如 .should() 也不起作用,因为它不会为 if/else.

生成布尔值

相反,我们要使用 JQuery's .val() function.

...
if ($input.val()) { // if $input.val() returns an empty string, this evaluates to false
  // code to run if the $input element has a value
} else {
  // code to run if the $input element does not have a value. 
}
...

注意:我颠倒了你的顺序,$input.val() === '' 是 else,而不是 if。

检查可以是值本身

cy.get(`[class^='input-module_field']`).eq(0)
  .then(($input) => {

    const field0Val = $input.val() || 'foo'    // if empty use "foo"

    cy.get(`[class^='input-module_field']`).eq(0).type(field0Val)
    cy.get(`[class^='input-module_field']`).eq(1).type('bar')
    cy.get(`[class^='input-module_field']`).eq(2).type('foo-bar')
    cy.get(`[class^='input-module_field']`).eq(3).type('foo-bar-foo')
  })