Примечание: использование MEAN — Mocha, Express, Angular и Node для приложения.
Я изучаю, как проводить тест e2e, и я создал небольшое приложение для тестирования. Одна вещь, которую он делает, это то, что всякий раз, когда вы выполняете действие, он отображает сообщение в течение X секунд, а затем исчезает. Я использую angulars $timeout.
$scope.displayMessage = function(messageIn, borderColor){
var timeoutTime = 5000; //clear the message after x seconds
$scope.borderType = "1px solid " + borderColor;
$scope.messages = messageIn;
$scope.visibility = true; //reveal the div
$timeout.cancel($scope.timeout); //cancel any previous timers
$scope.timeout = $timeout(function(){ //Set and start new timer.
$scope.visibility = false;
$scope.messages = "";
}, timeoutTime);
};
Сейчас я пытаюсь это проверить. В настоящее время у меня есть
it("should display message", function(done){
var button = element(by.id("getStudents"));
console.log("clicking button");
var messageElem = element(by.binding("messages"));
button.click().then(function () {
console.log("button clicked");
messageElem.getText().then(function(text){
console.log("The text should equal: " + text);
});
//expect(messageElem.getText()).toBe("Students retrieved");
console.log("test executed");
});
done();
});
Но, похоже, он ждет, пока не истечет время ожидания, чтобы выполнить messageElem.getText().then()
, после чего div был очищен. Во время тайм-аута будет распечатан журнал «выполненный тест», но не функция «getText()». Я предполагаю, что это как-то связано с жизненным циклом углов?
А вот и HTML (в формате Jade)
div(ng-model="messages",ng-show = "visibility", style = "clear:both;padding-top:3em;border:{{borderType}};text-align:center;")
h3
{{messages}}
игнорируйте мой стиль, мне было лень делать css файл для этого тестового приложения :D