Суть вопроса такова.
Имеется поле ввода и список блоков
https://gyazo.com/b4a3386cb0651432dfc68e45e621b547
При вводе текста в поле и нажатии Enter в конец списка добавляется один блок.
Используется Angular.
Это код, отвечающий за добавление элемента
$scope.ngCreate = function ($event) {
if(window.event.key == "Enter"){
if($scope.blur!="" && $scope.blur!=undefined && mapInit==1){
var left_elements = angular.element(document.querySelector("body"));
var left_elementsE = left_elements.find('.js-content_left__elements');
var newLi = angular.element("<li>");
var newA = angular.element("<a>");
newA.attr("href", "#");
var newSpan = angular.element("<span>");
newSpan.addClass("glyphicon");
newSpan.addClass("glyphicon-remove");
newSpan.addClass("pull-right");
var newNumber=$("ul").find($("li")).length;
newSpan.attr("data-id", newNumber+1);
newSpan.attr("ng-click", "ngDelete("+(newNumber+1)+");");
left_elementsE.append(newLi);
newLi.append(newA);
newA.append($scope.blur);
newA.append(newSpan);
newSpan.on("click", function (e){
var number=e.target.getAttribute("data-id");
DeleteElement(number);
});
//добавление метки на карту
Placemark=new ymaps.Placemark(myMap.getCenter(), {
balloonContent: $scope.blur,
iconContent: markers.length+1
}, {
preset: 'islands#Icon'+ markers.length+1,
draggable: true
});
Placemark.events.add('drag', function (g) {
var e = g.get('target');
updatePolyline(e.properties._data.iconContent, e.geometry._coordinates);
});
myMap.geoObjects.add(Placemark);
Placemarks.push(Placemark);
markers.push(myMap.getCenter());
names.push($scope.blur);
updatePolyline(markers.length, myMap.getCenter());
$scope.blur = '';
}
};
if((Placemarks.length == markers.length)&&(markers.length == names.length)){
return 1;
}else{
return 0;
}
}
Тест для него:
var ctrl, ctrlScope, injector;
module("Testing the controller", {
setup: function () {
angular.module('map-app');
injector = angular.injector(['ng', 'map-app']);
ctrlScope = injector.get('$rootScope').$new();
ctrl = injector.get('$controller')('ctrlMain', { $scope: ctrlScope });
ctrlScope.model = {
};
},
teardown: function () {
}
});
asyncTest("Test ngCreate", function() {
setTimeout(function() {
equal(true, ctrlScope.ngCreate());
start();
}, 8000);
});
Проблема в том, что при выполнении теста значение поля ввода пустое и не запущено событие нажатия клавиши Enter.
Мне нужно как-то скормить тесту заполненное поле ввода и нажатую клавишу, т.е. сэмулиовать действия пользователя.
Каким образом это нужно сделать ? Мне нужен хотя бы приблизительный пример теста для подобной ситуации.