簡體   English   中英

function 在賽普拉斯中總是返回未定義的值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM