Así que estoy tratando de tener dos argumentos opcionales y una barra inclinada opcional. La razón por la que necesito una barra inclinada opcional es porque la URL base es simplemente localhost:3000/web/reserve no localhost:3000/web/reserve/ . Los argumentos vacíos predeterminados funcionan como se esperaba cuando no pasan nada a webpageCheck sin embargo, no puedo hacer que funcione el (/) opcional. Si hiciera http://localhost:3000/web/reserve/${label}${count} fallaría al llamar a webpageCheck porque no hay una barra diagonal al final. ¿Alguien sabe como hacer esto?
const web = { label: 'Hello', count: '10', }; const webpageCheck = (label = '', count = '') => { const optionalSlash = '/' cy.url().should( 'eq', `http://localhost:3000/web/reserve${optionalSlash + label}${optionalSlash + count}` ); }; webpageCheck()Por lo tanto, parece que la barra inclinada optionalSlash debería estar en la cadena antes de la label o el count , y si faltan la label o el count , omitimos agregar la barra inclinada optionalSlash para esa variable. Si eso es cierto, podría hacer un ternario simple al construir la cadena.
`http://localhost:3000/web/reserve${ label ? optionalSlash + label : '' }${ count ? optionalSlash + count : ''}`Puede recopilar las partes en una matriz, filtrarlas por booleanos y unirlas con el separador deseado.
const web = { label: 'Hello', count: '10' }, webpageCheck = (label = '', count = '', separator = '/') => ['http://localhost:3000/web/reserve', label, count] .filter(Boolean) .join(separator); console.log(webpageCheck()); console.log(webpageCheck(web.label)); console.log(webpageCheck(web.label, web.count));Debería intentar definir una cadena con su lógica, algo como esto:
const web = { label: 'Hello', count: '10', }; const webpageCheck = (label = '', count = '') => { //Logic example let addressOptionsString=(label!==''? ("/" + label):'') + (count!==''? ("/" + count):'') cy.url().should( 'eq', `http://localhost:3000/web/reserve${adressOptionsString}` ); }; webpageCheck()