ठीक है, तो, मेरे पास यह कोड है:

Cypress.Commands.add ('MethodName', (argument) => {

    var Fails = 0

    cy.get('anything').each(Id => {
        if (blablabla) {
        Fails += 1
            cy.log("Inside the each: " + Fails) //prints 1
    }
    })
    cy.log("Outside the each: " + Fails) //prints 0
 
});

मैं प्रत्येक आइटम का परीक्षण करना चाहता हूं और यदि कोई शर्त गलत है, तो मैं चर "विफल" में 1 जोड़ना चाहता हूं।

फिर, अंत में, यदि विफल 0 है, तो कोई त्रुटि नहीं है, और मैं चाहता हूं कि यह "कोई विफल नहीं" संदेश लॉग करे। समस्या यह है कि, भले ही वेरिएबल EACH के अंदर 1 में बदल जाता है, जब यह बाहर होता है, तो यह वापस 0 पर आ जाता है।

यह मेरे लिए बहुत निराशाजनक है, क्योंकि मैं सी # कोड लिखता था और सी # में, यह काम करेगा, क्योंकि चर की घोषणा प्रत्येक के बाहर है।

तुम लोगों का क्या सुझाव है?

1
Gabriel Costa Finkel 28 सितंबर 2020, 23:34

1 उत्तर

सबसे बढ़िया उत्तर

जावास्क्रिप्ट अतुल्यकालिक रूप से चलता है जिसका अर्थ है कि आपके कोड क्रम में नहीं चलते हैं। तो आपके मामले में क्या हो रहा है Outside the each: पहले निष्पादित हो रहा है और उसके बाद Inside the each: निष्पादित किया जा रहा है। यह सुनिश्चित करने के लिए कि प्रत्येक के बाहर प्रत्येक के अंदर के बाद चलता है, आपको then() का उपयोग करना होगा।

Cypress.Commands.add('MethodName', (argument) => {
   var Fails = 0
   cy.get('anything').each(Id => {
      if (blablabla) {
         Fails += 1
         cy.log("Inside the each: " + Fails)
      }
   }).then(() => {
      cy.log("Outside the each: " + Fails)
   })
})
2
Alapan Das 29 सितंबर 2020, 14:09