Estoy construyendo un marco de automatización en JavaScript para WebdriverIO.
Los mensajes de error "listos para usar" no son muy útiles y me gustaría agregar el nombre de la clase y el nombre del método como parte de un prefijo al mensaje de error que aparece cuando falla el método o la función.
Me las arreglé para llamar al nombre de la clase con ClassName.name
Sin embargo, no he encontrado una solución para hacer referencia al nombre del método sin usar algún valor codificado.
A continuación se muestra un resumen de los cambios que me gustaría hacer.
Antes:
setElementValue(element, value){ try{ this.waitForElementAndScroll(element); $(element).setValue(value); } catch(error){ throw `${BasePage.name}.setElementValue: ${error.message}`; } }Después:
setElementValue(element, value){ try{ this.waitForElementAndScroll(element); $(element).setValue(value); } catch(error){ throw `${BasePage.name}.${setElementValue.name}: ${error.message}`; } } Donde ${setElementValue.name} es el método para hacer referencia al nombre del método/función.
¡Muchas gracias de antemano!
He intentado lo siguiente sin éxito:
method.name //ReferenceError: method is not defined
(method).name //ReferenceError: method is not defined
Function.name //Returns "Function"
Function.value //Returns "undefined"
constructor.name //Returns "Object"
setElementValue.name //ReferenceError: setElementValue is not defined
Encontré esta solución (muy obvia) que me funcionó:
this.setElementValue.namedonde el mensaje de error arrojado es:
throw `${BasePage.name}.${this.setElementValue.name}: ${error.message}`;que genera el siguiente registro de error cuando falla el método:
`BasePage.setElementValue: element ("#submit-button") still not displayed after 500ms`