У меня есть следующий тестовый класс в cypress / интеграции / todo-actions.spe c. 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)
})
})
Он ссылается на 'todoPage.verifyTodoIsNotSelected' метод в кипарис / объект страницы. js класс. У этого класса есть утверждение, которое ссылается на другой метод в том же классе.
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')
}