Глобальная функция в Сиесте
Я только начал использовать Bryntum Siesta и ExtJs для автоматического тестирования. Моя первая, очень простая тестовая работа, как я и ожидал. Теперь я столкнулся с проблемой с DRY-кодом.
Я пытаюсь написать СУХОЙ код для теста входа.
Здесь фактически два случая: - Логин с действительными данными - Логин с недействительными данными (неверный пароль И / ИЛИ Имя пользователя)
В Java это будет работать с глобальными переменными / функциями. И я подумал, что раньше я делал что-то вроде глобальных переменных javascript. Но это не работает.
Итак, у меня есть моя пробная функция:
var testFunction = function(){
console.log("I am a global function, and i am working!");
};
и моя цель - вызвать его в моем t.chain() в моем Testfile:
{
type: LoginUsername,
target: ">>#loginviewIdemId #loginForm #pwTriggerForm #fldName",
desc: 'Type in Username',
},
function(next) {
testFunction();
next();
},
Когда я вызываю функцию, созданную в этом тестовом файле над цепочкой, она работает. Я прошу прощения, если это какой-то основной вопрос JavaScript, но я опустошен:D
Заранее спасибо!
1 ответ
Вы можете расширить свой класс Test, чтобы добавить служебные методы и избежать нарушений DRY. Этот путеводитель подводит итог: https://www.bryntum.com/docs/siesta/
Давайте создадим 2 специальных утверждения, которые будут проверять нечетную четность переданного числа. Обычно утверждение должно проверить свой оператор и сообщить результат с помощью методов {@link Siesta.Test#pass} или {@link Siesta.Test#fail}.
Class('MyProject.MyTestClass', {
isa : Siesta.Test.ExtJS,
methods : {
isOdd : function (number, description) {
if (number % 2) {
this.pass(description);
} else {
this.fail(description, {
assertionName : 'isOdd',
got : number,
annotation : 'Need odd number'
});
}
},
isEven : function (number, description) {
if (!(number % 2)) {
this.pass(description);
} else {
this.fail(description, {
assertionName : 'isEven',
got : number,
annotation : 'Need even number'
});
}
}
}
})
При сбое старайтесь предоставить как можно больше информации о сбое и отформатируйте сообщение об ошибке в удобочитаемой форме. Пожалуйста, обратитесь к {@link Siesta.Test#fail} методической документации для получения дополнительных опций.
Чтобы использовать Harness для вашего нового тестового класса, вы должны указать используемый тестовый класс, установив параметр конфигурации {@link Siesta.Harness#testClass}:
harness.configure({
title : 'Awesome Test Suite',
testClass : MyProject.MyTestClass,
preload : [
...
]
})
Тестовый класс должен быть загружен сразу после файла siesta-all.js:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="__path_to_siesta__/resources/css/siesta-all.css">
<script type="text/javascript" src="__path_to_siesta__/siesta-all.js"></script>
<!-- The file with new test class -->
<script type="text/javascript" src="lib/MyTestClass.js"></script>
<script type="text/javascript" src="index.js"></script>
</head>
<body>
</body>
</html>
Теперь вы можете использовать ваше пользовательское утверждение или вспомогательные методы во всех ваших тестах:
describe('My test', function(t) {
var nbr = 1;
t.isEven(nbr); // Will fail
})