[英]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.