ሳይፕረስ ተስፋ እና ሳይፕረስ አልተመሳሰል፡ 13 ጠቃሚ እውነታዎች

በቀደመው በኛ ጽሑፍ፣ በሳይፕረስ ውስጥ ያሉትን አወቃቀሮች እና በJSON ፋይሎች ውስጥ ሊዋቀሩ የሚችሉ የተለያዩ አማራጮችን አይተናል። ይህ ጽሑፍ ይገነዘባል ሳይፕረስ ተስፋሳይፕረስ አልተመሳሰልም። በፕሮጀክታችን ውስጥ በተግባራዊ ትግበራ እና ምሳሌዎች ባህሪ. እንዲሁም ተጠባቂዎችን በእኛ ያልተመሳሰለ ኮድ እና አንዳንድ አስፈላጊ ተግባራትን እንዴት ማካተት እንደምንችል እንወያያለን። wrap()task(). እንጀምር!

ሳይፕረስ ፕሮሚዝ እና ሳይፕረስ አልተመሳሰል፡

ሳይፕረስ ተስፋሳይፕረስ አልተመሳሰልም። ተፈጥሮ አንዳንድ አስፈላጊ ጽንሰ-ሐሳቦች ናቸው. ልክ እንደሌላው የጃቫ ስክሪፕት ማዕቀፍ፣ ሳይፕረስ እንዲሁ በአsynchronous እና በተስፋዎች ዙሪያ ያጠነክራል። ሳይፕረስ ሁሉንም ያልተመሳሰለ ባህሪ ከውስጥ ይቆጣጠራል፣ እና ከተጠቃሚው ተደብቋል። እንጠቀማለን .then() በኮዳችን ውስጥ ቃል ኪዳኖችን በእጅ ለማስተናገድ። የሳይፕረስ ያልተመሳሰለ ባህሪን የምንቆጣጠርበት እንደ Cypress-promise በ npm ውስጥ ያሉ ውጫዊ ጥቅሎች አሉ። ስለእነዚህ ሁሉ ርዕሰ ጉዳዮች በዝርዝር እንነጋገራለን.

ሳይፕረስ ፕሮሚዝ እና ሳይፕረስ አልተመሳሰልም።
ሳይፕረስ ተስፋ

ዝርዝር ሁኔታ

ሳይፕረስ አልተመሳሰልም።

እንደምናውቀው, ሳይፕረስ የተመሰረተው መስቀለኛ መንገድ ጄ. ከ Node.js ግንባታ የተጻፈ ማንኛውም ማዕቀፍ ነው። ያልተመሳሰለ. የሳይፕረስን ያልተመሳሰል ባህሪ ከመረዳታችን በፊት በተመሳሰለ እና ባልተመሳሰል ተፈጥሮ መካከል ያለውን ልዩነት ማወቅ አለብን።

የተመሳሰለ ተፈጥሮ

በተመሳሰለ ፕሮግራም ውስጥ ፣ ኮድ በሚተገበርበት ጊዜ ፣ ​​የመጀመሪያው መስመር በተሳካ ሁኔታ ከተከናወነ ብቻ ፣ ሁለተኛው መስመር ይከናወናል። የመጀመሪያው መስመር እስኪሰራ ድረስ ይጠብቃል. በቅደም ተከተል ይሰራል.

ያልተመሳሰለ ተፈጥሮ

ኮዱ በአንድ ጊዜ ይሰራል, እያንዳንዱ እርምጃ ያለፈውን ትዕዛዝ ሁኔታ ሳያስቸግረው እስኪፈጸም ድረስ ይጠብቃል. ኮዳችንን በቅደም ተከተል ብንጽፍም ፣የተመሳሰለ ኮድ ምንም እርምጃ እስኪጠናቀቅ ድረስ ሳይጠብቅ ይፈጸማል እና ከቀዳሚው ትእዛዝ/ኮድ ሙሉ በሙሉ ነፃ ነው።

በሳይፕረስ ውስጥ የማይመሳሰል ምንድን ነው?

ሁሉም የሳይፕረስ ትዕዛዞች በተፈጥሯቸው የማይመሳሰሉ ናቸው። ሳይፕረስ የምንጽፈውን ተከታታይ ኮድ የሚረዳ፣ በማሸጊያው ውስጥ የሚሰለፍ እና በኋላ ላይ ኮዱን ስናስፈጽም የሚሄድ ጥቅል አለው። ስለዚህ ሳይፕረስ ከተፈጥሮ እና ከተስፋዎች ጋር የተያያዘውን ስራችንን ሁሉ ይሰራል!

ለእሱ አንድ ምሳሌ እንረዳ።

 it('ወደ ቴክኖሎጂ ዩአርኤል ለማሰስ የቴክኖሎጂ አማራጩን ጠቅ ያድርጉ' ተግባር () {cy.visit('https://lambdageeks.com/') // ምንም አይነት ትእዛዝ አልተፈጸመም //በቴክኖሎጂ አማራጭ cy ላይ ጠቅ ያድርጉ። ማግኘት ('.fl-node-5f05604c3188e > .fl-col-content > .fl-module > .fl-module-content > .fl-photo > .fl-photo-content > a > .fl-photo-img' ) // እዚህ ምንም አልተፈፀመም .ክሊክ () // እስካሁን ምንም ነገር አልተፈጠረም cy.url () // እዚህ ምንም አይነት ትዕዛዝ አልተፈፀመም .መሆኑ ('ማካተት', '/ ቴክኖሎጂ') // አይ, ምንም. }); // አሁን ሁሉም የፈተና ተግባራቶች መፈፀም ጨርሰዋል // ሳይፕረስ ሁሉንም ትእዛዞች ወረፋ አስከትሎ ነበር, እና አሁን በቅደም ተከተል ይሰራሉ.

ያ በጣም ቀላል እና አስደሳች ነበር። አሁን የሳይፕረስ Asynchronous ትዕዛዞች እንዴት እንደሚሠሩ ተረድተናል። ማመሳሰልን እና ኮድን ማመሳሰልን ወደምንሞክርበት በጥልቀት እንዝለቅ።

ሳይፕረስ ሲንክሮኖስ እና ያልተመሳሰሉ ትዕዛዞችን ማደባለቅ

እንዳየነው፣ የሳይፕረስ ትዕዛዞች አልተመሳሰሉም። ማንኛውንም የተመሳሰለ ኮድ ሲያስገቡ ሳይፕረስ የማመሳሰያ ኮድ እስኪፈፀም ድረስ አይጠብቅም። ስለዚህ የማመሳሰል ትዕዛዞቹ ቀደም ሲል የሳይፕረስ ትዕዛዞችን ሳይጠብቁ እንኳን በመጀመሪያ ይሰራሉ። በደንብ ለመረዳት አንድ አጭር ምሳሌ እንመልከት።

 it('ወደ ቴክኖሎጂ ዩአርኤል ለማሰስ የቴክኖሎጂ አማራጩን ጠቅ ያድርጉ' ተግባር () {cy.visit('https://lambdageeks.com/') //በቴክኖሎጂ አማራጭ cy.get('.fl- ላይ ጠቅ ያድርጉ) node-5f05604c3188e > .fl-col-content > .fl-module > .fl-module-content > .fl-photo > .fl-photo-content > a > .fl-photo-img') .ጠቅ አድርግ() cy .url() // ምንም አይነት ትእዛዛት እዚህም አልተፈጸሙም .('ማካተት'፣'/ቴክኖሎጂ') // አይ፣ ምንም }); });
የምዝግብ ማስታወሻው ትእዛዝ የተመሳሰለ አፈፃፀም

ምዝግብ ማስታወሻው በኮዱ መጨረሻ ላይ ተጨምሯል, ይህም የማመሳሰል ትዕዛዝ ነው. ፈተናውን በምናካሂድበት ጊዜ, ገጹ ከመጫኑ በፊት ምዝግብ ማስታወሻው እንደታተመ ማየት ይችላሉ. በዚህ መንገድ ሳይፕረስ የተመሳሳይ ትዕዛዙን አይጠብቅም እና ትእዛዞቹን ከመፈጸሙ በፊትም እንኳ ይፈጽማል.

እንደታሰበው እንዲፈጽሙ ከፈለግን ወደ ውስጥ መጠቅለል አለብን .then() ተግባር. በምሳሌ እንረዳ።

it('ወደ ቴክኖሎጂ ዩአርኤል ለማሰስ የቴክኖሎጂ አማራጩን ጠቅ ያድርጉ' ተግባር () {cy.visit('https://lambdageeks.com/') //በቴክኖሎጂ አማራጭ cy.get('.fl- ላይ ጠቅ ያድርጉ) node-5f05604c3188e > .fl-col-content > .fl-module > .fl-module-content > .fl-photo > .fl-photo-content > a > .fl-photo-img') .ጠቅ አድርግ() cy .url() // ምንም አይነት ትእዛዞች እዚህም አልተፈጸሙም .የሚገባቸው('ማካተት'፣ '/ቴክኖሎጂ') // አይ፣ ምንም። // የአስመር ባህሪን ለመፈተሽ ይመዝገቡ }); });
አፈጻጸምን ከ .ከዚያ () ትዕዛዝ ጋር አስምር

ሳይፕረስ ተስፋ ምንድን ነው?

ከላይ እንዳየነው ሳይፕረስ ከመተግበሩ በፊት ሁሉንም ትእዛዞች ያሰማል። በዝርዝር ለመድገም, እኛ ማለት እንችላለን ሳይፕረስ ተስፋዎችን (ትዕዛዞችን) ወደ የተስፋዎች ሰንሰለት ይጨምራል። ሳይፕረስ ሁሉንም ትዕዛዞች በሰንሰለት ውስጥ እንደ ቃል ኪዳን ያጠቃልላል.

ተስፋዎችን ለመረዳት ከእውነተኛ ህይወት ሁኔታ ጋር ያወዳድሯቸው። ማብራሪያው የተስፋውን ቃል ባልተመሳሰል ተፈጥሮም ይገልፃል። አንድ ሰው ቃል ከገባህ ​​እነሱም አትቀበል or ተፈጸመ የሰጡት መግለጫ። በተመሳሳይ፣ ባልተመሳሰለ መልኩ፣ ቃልም ገብቷል። አትቀበል or ተፈጸመ በቃል ውስጥ የምንጠቀልለው ኮድ.

ሆኖም፣ ሳይፕረስ ሁሉንም ተስፋዎች ይንከባከባል፣ እና በብጁ ኮድ እነሱን ለመጠቀም አላስፈላጊ ነው። እንደ ጃቫ ስክሪፕት ፕሮግራም አድራጊዎች ስለመጠቀም ጉጉት ይኖረናል። ይጠብቃል በትእዛዛችን ውስጥ. ሳይፕረስ ኤፒአይዎች በአጠቃላይ ከለመድነው ፈጽሞ የተለዩ ናቸው። የዚህን ተጨማሪ ክፍል በጥልቀት እንመለከታለን።

የሳይፕረስ ተስፋዎች ግዛቶች

ተስፋዎች በሳይፕረስ ትዕዛዞች ላይ የተመሰረቱ ሶስት የተለያዩ ግዛቶች አሏቸው። ናቸው

  • ተፈትቷል - ደረጃ / ትዕዛዙ በተሳካ ሁኔታ ሲፈፀም ይከሰታል።
  • በመጠባበቅ ላይ - ግድያው የት እንደተጀመረ ይግለጹ, ውጤቱ ግን እርግጠኛ አይደለም.
  • አለመቀበል - እርምጃው ሳይሳካ ሲቀር ይከሰታል።

እንደ ጃቫ ስክሪፕት ፕሮግራመር፣ ቃል ኪዳናችንን በኮዳችን ውስጥ ፅፈን እንመልሳቸዋለን። ለምሳሌ,

//ይህ ኮድ ለማሳያ መግለጫ ብቻ ነው('ሳይፕረስ ምሳሌ'፣ ተግባር () { it('ወደ ቴክኖሎጂ ዩአርኤል ለማሰስ የቴክኖሎጂ አማራጩን ጠቅ ያድርጉ'፣ ተግባር () {cy.visit('https://lambdageeks.) com/') //የቴክኖሎጂ አማራጭ cy.get ('.fl-node-5f05604c3188e > .fl-col-content > .fl-module > .fl-module-content > .fl-photo > .fl- ላይ ጠቅ ያድርጉ። photo-content > a > .fl-photo-img') .ከዚያ (() => {ሳይ.ዩርል ይመለሱ(); }) cy.url() ማካተት'፣ '/ቴክኖሎጂ')})});});

እዚህ ለእያንዳንዱ ትእዛዛት ቃል ኪዳኖችን እየመለስን ነው። ይህ በሳይፕረስ ውስጥ አያስፈልግም. እንደ እድል ሆኖ፣ ሳይፕረስ ሁሉንም ተስፋዎች በውስጥም ይንከባከባል፣ እና በእያንዳንዱ እርምጃ ቃል ኪዳኖችን ማከል አያስፈልገንም። ሳይፕረስ አለው እንደገና መሞከር-ችሎታ አማራጭ ፣ ትዕዛዙን ለማስፈጸም ለተወሰነ ጊዜ የሚሞክርበት። ቃል ኪዳኖችን በእጅ ሳያካትት የኮድ ምሳሌ እናያለን።

    it('ወደ ቴክኖሎጂ ዩአርኤል ለማሰስ የቴክኖሎጂ አማራጩን ጠቅ ያድርጉ' ተግባር () {cy.visit('https://lambdageeks.com/') //በቴክኖሎጂ አማራጭ cy.get('.fl- ላይ ጠቅ ያድርጉ) node-5f05604c3188e > .fl-col-content > .fl-module > .fl-module-content > .fl-photo > .fl-photo-content > a > .fl-photo-img') .ጠቅ አድርግ() cy .url () . አለበት ('ማካተት'፣ '/ቴክኖሎጂ')}); });
የሳይፕረስ ትዕዛዞች ከውስጥ የተያዙ የተስፋ ቃሎች

ከላይ ያለው ኮድ የተጨናነቀ አይደለም እና ለማንበብ እና ለመረዳት ቀላል ነው። ሳይፕረስ ሁሉንም የተስፋ ስራዎችን ይቆጣጠራል, እና ከተጠቃሚው ተደብቋል. ስለዚህ የገባውን ቃል በየትኛውም ቦታ ስለማስተናገድ ወይም ለመመለስ መጨነቅ የለብንም!

በሳይፕረስ ውስጥ መጠበቅን እንዴት ይጠቀማሉ?

ከላይ እንደተብራራው ሳይፕረስ የትእዛዝ ወረፋ በመፍጠር እና በቅደም ተከተል በማሄድ ያልተመሳሰል ኮድን የማስተናገድ የራሱ መንገድ አለው። በማከል ላይ awaits ለትእዛዞቹ እንደተጠበቀው አይሰራም. ሳይፕረስ ሁሉንም ነገር ከውስጥ ስለሚያስተናግድ, እንዳይጨምሩ እመክራለሁ awaits ወደ ኮድ.

ተጠባቂዎችን ማከል ከፈለጉ እንደ የሶስተኛ ወገን ቤተ-መጽሐፍት መጠቀም ይችላሉ። ሳይፕረስ - ቃል ኪዳን ይህ ሳይፕረስ እንዴት እንደሚሰራ ይለውጣል. ይህ ቤተ-መጽሐፍት እንድትጠቀም ይፈቅድልሃል ተስፋዎች በትእዛዞች ውስጥ, እና ይጠቀሙ ጠብቅ በኮዱ ውስጥ

በመጠባበቅ ላይ የምንጠቀምባቸውን መንገዶች እና እንዴት መጠቀም እንደሌለብን እንረዳ።

እንደዚህ አይነት ተጠባቂዎችን መጠቀም የለብዎትም

// አይጠቀሙ ቆይ በዚህ መንገድ ይግለጹ ('ገጹን ይጎብኙ'፣ () => {(async () => { cy.visit('https://lambdageeks.com/') ይጠብቁ cy.url()። አለበት ('ማካተት'፣ '/ቴክኖሎጂ'); })()})

በምትኩ, እንደዚህ አይነት መጠቀም ይችላሉ

ይግለጹ ('ገጹን ይጎብኙ', () => {ሳይ.ጎብኝ('https://lambdageeks.com/')።ከዚያ (async () => cy.url () ጠብቅ ('ማካተት'፣') /ቴክኖሎጂ) ())))

ይህ ለማንኛውም የሳይፕረስ ትዕዛዞች ይሰራል።

ሳይፕረስ መጠቅለያ

wrap() በሳይፕረስ ውስጥ ያለ ማንኛውም ነገር እንደ መከራከሪያ የሚሰጥ ተግባር ነው።

የአገባብ

cy.wrap(subject)
cy.wrap(subject, options)

እንዴት መድረስ እንደሚቻል አንድ ምሳሌ እንመልከት wrap() በእኛ ኮድ ውስጥ.

const getName = () => {'ሆርስ' ይመለሱ } cy.wrap ({ስም: getName}) .መጥራት ('ስም') . አለበት ('eq', 'ፈረስ') // እውነት

በምሳሌው ውስጥ, እንጠቀልላለን getName እና ከዚያ ስሙን ጥራ።

ሳይፕረስ ጥቅል ቃል ኪዳን

በኮዱ የተመለሱትን ተስፋዎች መጠቅለል እንችላለን። የተሰጠውን እሴት እና ከመድረስዎ በፊት ትዕዛዞች የገባውን ቃል እስኪፈታ ድረስ ይጠብቃሉ። ከዚያ ወደሚቀጥለው ትዕዛዝ ወይም ማረጋገጫ ይቀጥሉ.

const customPromise = አዲስ ቃል ኪዳን ((መፍታት፣ ውድቅ ማድረግ) => {// የአስምር ኮድ ለማግኘት የ setTimeout() ተግባርን እንጠቀማለን። setTimeout(() => {መፍታት({አይነት፡ 'ስኬት''፣ መልእክት፡ 'ፖም እና ብርቱካን'') , }) }, 2500) }) it('ቃል እስኪያጠናቅቅ መጠበቅ አለበት', () => { cy.wrap(customPromise).its('መልዕክት')። አለበት('eq'፣ 'ፖም እና ብርቱካን' )});

ክርክሩ ሲገባ cy.wrap() ቃል ኪዳን ነው, የተስፋው ቃል እስኪያበቃ ድረስ ይጠብቃል. የገባው ቃል ውድቅ ከሆነ ፈተናው ይወድቃል።

ሳይፕረስ-ተስፋ npm

የሳይፕረስን ተስፋዎች ለመጠቀም ከፈለግን በተጨማሪ የተጠራ ቤተ-መጽሐፍት ወይም ጥቅል መጠቀም እንችላለን ሳይፕረስ - ቃል ኪዳን እና በእኛ ኮድ ውስጥ ያካትቱት። ይህ ጥቅል ሀን እንዲቀይሩ ያስችልዎታል የሳይፕረስ ትዕዛዝ ወደ ቃል መግባት እና በኮዱ ውስጥ እንዲጠብቁ ወይም እንዲያመሳስሉ ይፈቅድልዎታል። ይሁን እንጂ እነዚህ ሁኔታዎች አይሰሩም before or beforeEach ብሎኮች. መጀመሪያ ላይ በተርሚናል ውስጥ የሚከተለውን ትዕዛዝ በማለፍ ጥቅሉን በፕሮጀክታችን ውስጥ መጫን አለብን.

npm i cypress-promise

አንዴ ከተጫነ ተርሚናሉ እንደዚህ ያለ ነገር ይመስላል።

ሳይፕረስ-ተስፋ መጫን

ከተጫነ በኋላ ቤተ-መጽሐፍቱን ወደ የሙከራ ፋይላችን ማስመጣት አለብን።

import promisify from 'cypress-promise'

በዚህ ቤተ-መጽሐፍት፣ ቤተኛ የሆነውን የሳይፕረስ ቃል ኪዳን መፍጠር እና መሻር እና በመጠባበቅ ላይ መጠቀም እና በኮዱ ውስጥ ማመሳሰል ይችላሉ። የገባውን ቃል መግባት አለብህ promisify ቁልፍ ቃል ለተመሳሳይ ምሳሌ እንመልከት.

Import promisify from 'cypress-promise' it('አስመርክ/አስምር ጋር መሮጥ አለበት'፣ async () => {const apple = wait promisify(cy.wrap('apple')) const oranges = wait promisify(cy.wrap) ('ብርቱካናማዎች')) መጠበቅ(ፖም)።ወደ.እኩል('ፖም') መጠበቅ(ብርቱካን)።ወደ.እኩል('ብርቱካን)});
በሳይፕረስ-ተስፋ ቃል ስጥ

ይህ ለመማር በጣም ቀላል እና አስደሳች ነበር! በዚህ መንገድ በሳይፕረስ ውስጥ ያልተመሳሰለ ኮድ መመደብ ይችላሉ።

ሳይፕረስ አሲንክ ተግባር

task() በመስቀለኛ መንገድ ውስጥ ያለውን ኮድ የሚያሄድ ሳይፕረስ ውስጥ ያለ ተግባር ነው። ይህ ትዕዛዝ ውጤቱን ወደ ኮድ ከመመለስዎ በፊት ከአሳሽ ወደ መስቀለኛ መንገድ እንዲቀይሩ እና በመስቀለኛ መንገድ ውስጥ ትዕዛዞችን እንዲፈጽሙ ያስችልዎታል.

የአገባብ

cy.task(event)
cy.task(event, arg)
cy.task(event, arg, options)

task() ዋጋን ወይም ቃልን ይመልሳል። task() ተስፋው እንደተመለሰ ከተመለሰ ይወድቃል undefined. በዚህ መንገድ ተጠቃሚው ክስተቱ በአንዳንድ ሁኔታዎች የማይስተናገድባቸውን የትየባ ምልክቶችን እንዲይዝ ያግዘዋል። ማንኛውንም እሴት መመለስ የማትፈልግ ከሆነ እለፍ null እሴት.

ተደጋግሞ የሚነሱ ጥያቄዎች

ሳይፕረስ የተመሳሰለ ነው ወይስ አልተመሳሰል?

ሳይፕረስ ነው። ያልተመሳሰለ የትእዛዞቹን አፈፃፀም ከመጠበቅ ይልቅ ወረፋውን በመመለስ. ምንም እንኳን ያልተመሳሰለ ቢሆንም፣ አሁንም ሁሉንም የፈተና ደረጃዎች በቅደም ተከተል ይሰራል። ሳይፕረስ ሞተር ይህን ሁሉ ባህሪ ይቆጣጠራል።

በሳይፕረስ ውስጥ የተስፋውን ሰንሰለት መያዝ ይቻላል?

ሳይፕረስ የተነደፈው የተስፋ ቃላቶቹን ለመያዝ በማንችልበት መንገድ ነው። እነዚህ ትእዛዛት በትክክል ተስፋዎች አይደሉም፣ ግን የተስፋ ቃል ይመስላል። በዚህ መንገድ፣ እንደ ግልጽ ተቆጣጣሪዎች ማከል አንችልም። catch.

ወደ ላይ ሸብልል