[英]function always return undefined value in cypress
这是赛普拉斯测试文件
import { Given, Then } from "cypress-cucumber-preprocessor/steps";
import { quickSignIn } from "../../../support/services/commonServices";
import { storyTableViewResultColumnCheck } from "../../../support/services/calculationStoryService";
Given('Logged into the application', () => {
quickSignIn(Cypress.env('username'), Cypress.env('password'));
});
Then('navigate to the story', () => {
storyTableViewResultColumnCheck();
});
这是 calculationStoryService.js 文件
export function storyTableViewResultColumnCheck() {
const stories = getAllCalculationStoriesFromExcel(); // return undefined value
expect(stories).not.to.be.undefined
cy.log("method - storyTableViewResultColumnCheck",stories)
}
function getAllCalculationStoriesFromExcel() {
cy.task("getExcelData", Cypress.env("calculationRelatedStoryPath")).then((stories) => {
console.log(stories) // in here print all the stories without any issue.
return stories;
});
}
在“storyTableViewResultColumnCheck”方法中调用“getAllCalculationStoriesFromExcel”方法时,它总是返回未定义的值。 但是在“getAllCalculationStoriesFromExcel”方法中的“ then ”块内的控制台日志将所有故事打印到控制台。
我想知道如何在 cy.task 完成后返回一个值
您可以添加一个 Promise 包装器以使其工作
export async function storyTableViewResultColumnCheck() {
const stories = await getAllCalculationStoriesFromExcel();
expect(stories).not.to.be.undefined
cy.log("method - storyTableViewResultColumnCheck",stories)
}
function getAllCalculationStoriesFromExcel() {
return new Promise(resolve => {
cy.task("getExcelData", Cypress.env("calculationRelatedStoryPath"))
.then((stories) => resolve(stories))
})
}
Cypress 命令是异步的。 所以你不能直接从一个命令返回一个值(包括cy.task
一个)。 此外,您的 function 没有返回任何内容,因为它没有声明return
语句。 为了同步执行流程,您可以使用then
回调:
function getAllCalculationStoriesFromExcel() {
return cy.task("getExcelData", Cypress.env("calculationRelatedStoryPath")).then((stories) => {
console.log(stories) // in here print all the stories without any issue.
return stories;
});
}
export function storyTableViewResultColumnCheck() {
getAllCalculationStoriesFromExcel().then(stories => {
expect(stories).not.to.be.undefined
cy.log("method - storyTableViewResultColumnCheck",stories)
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.