Я создаю структуру автоматизации в JavaScript для WebdriverIO.
Сообщения об ошибках «из коробки» не слишком полезны, и я хотел бы добавить имя класса и имя метода как часть префикса к сообщению об ошибке, которое выдается при сбое метода/функции.
Мне удалось назвать имя класса с помощью ClassName.name
Однако я не нашел решения для ссылки на имя метода без использования какого-либо жестко заданного значения.
Ниже приводится краткое описание изменений, которые я хотел бы внести.
До:
setElementValue(element, value){
try{
this.waitForElementAndScroll(element);
$(element).setValue(value);
}
catch(error){
throw `${BasePage.name}.setElementValue: ${error.message}`;
}
}
После:
setElementValue(element, value){
try{
this.waitForElementAndScroll(element);
$(element).setValue(value);
}
catch(error){
throw `${BasePage.name}.${setElementValue.name}: ${error.message}`;
}
}
Где ${setElementValue.name}
— метод ссылки на имя метода/функции.
Спасибо заранее!
Я безуспешно пробовал следующее:
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
Я нашел это (очень очевидное) решение для меня:
this.setElementValue.name
где выброшенное сообщение об ошибке:
throw `${BasePage.name}.${this.setElementValue.name}: ${error.message}`;
который выводит следующий журнал ошибок при сбое метода:
`BasePage.setElementValue: element ("#submit-button") still not displayed after 500ms`