ich eine sehr einfache service.show habe(), die im Grunde $ uibModal mit einiger Konfiguration ruft und gibt die Modalinstanz
function modalService($uibModal) {
return {
show(message) {
return $uibModal.open({
bindToController: true,
controllerAs: '$ctrl',
template: "<div id='message'>{{$ctrl.message}}</div>",
controller: [function() {
this.message = message;
}]
});
}
}
}
Ich mag wäre schreiben Testen Sie, ob das aktuelle Modal gültig ist und ob es die erwartete Nachricht enthält. Etwas wie folgt aus:
it('should show correct message', (done) => {
modal = modalService.show('hello');
modal.rendered.then(()=> {
expect($('#message').text()).toBe('hello');
done()
});
});
aber rendered
Versprechen nie gelöst wird. Ich kann eine Workaround wie expect
$timeout
$timeout
und tun $timeout.flush()
tun tun, aber nicht sicher, ob dies der richtige Weg ist und auch auf diese Weise kann ich immer noch nicht reinigen (afterEach
), um das modale schließen und bereit sein, eine andere Nachricht zu testen.
Der erste Test besteht, aber die zweite nicht mit der Meldung ' 'neue messagehello' Voraussichtlich gleich‚neuen message'.' Das 'modal.close()' entfernt Modal von dom nicht. Hast du eine Ahnung, warum es passieren könnte? – jonasnas
und warum brauche ich ein Modul ('uib/template/modal/window.html')? – jonasnas
Das Code-Snippet, das ich zur Verfügung gestellt habe, beide werden bestanden. Kannst du codepen/jsfiddle usw. anbieten, damit ich das untersuchen kann? Und bezüglich Ihrer anderen Frage müssen Sie 'module ('uib/template/modal/window.html')' 'einschließen, denn wenn Sie' $ uibModal.open() 'intern aufrufen, ruft es die Vorlage 'window.html' ab. . – Gaurav