gpt4 book ai didi

javascript - 当尝试使用 "TypeError: Cannot read property ' 调用同一页面对象类中的方法时,Cypress 测试返回 'this' 应该“未定义”

转载 作者:行者123 更新时间:2023-12-02 20:57:00 25 4
gpt4 key购买 nike

我在 cypress/integration/todo-actions.spec.js 中有以下测试类,

    /// <reference types="cypress" />

import { TodoPage } from "../page-object/TodoPage"

describe('todo actions test', () => {
const todoPage = new TodoPage
const todoText = 'hello'

beforeEach(() => {
todoPage.navigateDelay()
todoPage.addToDo(todoText)
})

it('add to do', () => {
todoPage.verifyTodoText(todoText)
todoPage.verifyTodoIsNotSelected(1)
})
})

它引用了 cypress/page-object.js 类中的“todoPage.verifyTodoIsNotSelected”方法。该类有一个断言,它引用同一类中的另一个方法。

export class TodoPage{
navigate() {
cy.visit('http://todomvc-app-for-testing.surge.sh/')
}

navigateDelay() {
cy.visit('http://todomvc-app-for-testing.surge.sh/?delay-new-todo=4000')
}

addToDo(todoText){
cy.get('.new-todo', {timeout:6000}).type(todoText + '{enter}')
}

getTodo(index){
cy.get('li:nth-child('+index+') > .view > .toggle')
}

selectToDo(index){
this.getTodo(index).click()
}

clearToDo(){
cy.contains('Clear completed').click()
}

filterAll(){
cy.get(':nth-child(1) > a').click()
}

filterActive(){
cy.get(':nth-child(2) > a').click()
}

filterCompleted(){
cy.get(':nth-child(3) > a').click()
}

//assertions start
verifyTodoIsNotSelected(index){
this.getTodo(index).should('not.be.checked')
}

verfyTodoIsSelected(index){
this.getTodo(index).should('be.checked')
}

verifyTodoText(todoText){
cy.get('label').should('have.text',todoText)
}

verifyTodoMarkCompleted(){
cy.get('label').should('have.css','text-decoration-line','line-through')
}

verifyClearTodo(){
cy.get('.todo-list').should('not.have.descendants','li')
}

verifyTodoCount(count){
cy.get('.todo-list li').should('have.length', count)
}
}

但是当我运行测试时,它失败并出现以下错误。

TypeError: Cannot read property 'should' of undefined

我尝试了以下方法并且通过了,但我想知道为什么上面的方法失败了?

verifyTodoIsNotSelected(index){
cy.get('li:nth-child('+index+') > .view > .toggle').should('not.be.checked')
}

最佳答案

您必须在此处返回 cy.get 方法

getTodo(index){
return cy.get('li:nth-child('+index+') > .view > .toggle')
}

关于javascript - 当尝试使用 "TypeError: Cannot read property ' 调用同一页面对象类中的方法时,Cypress 测试返回 'this' 应该“未定义”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61452206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com