Unit-Test-Service, der Versprechen verspricht Angularjs Jasmine

BEARBEITET pro Michal Charemza post.

Ich habe einen Dienst, stellt angularui modal dialog:

app.factory("dialogFactory", function($modal, $window, $q) {

    function confirmDeleteDialog() {

    var modalInstance = $modal.open({
        templateUrl: "../application/factories/confirmDeleteDialog.htm",
        controller: function($scope, $modalInstance) {

            $scope.ok = function() {
                $modalInstance.close("true");
            };

            $scope.cancel = function() {
                $modalInstance.dismiss("false");
            };
        }
    });


    return modalInstance.result.then(function(response) {
        return 'My other success result';
    }, function(response) {
        return $q.reject('My other failure reason');
    });

};

    return {
        confirmDeleteDialog: confirmDeleteDialog
    };

});

Über den Aufruf der delete-Methode, wenn der Benutzer hat auf Ok geklickt haben aus dem dialog requestNotificationChannel.deleteMessage(id) ausgeführt wird.

$scope.deleteMessage = function(id) {
        var result = dialogFactory.confirmDeleteDialog();

        result.then(function(response) {
            requestNotificationChannel.deleteMessage(id);
        });
    };

Das problem ist, ich bin nicht in der Lage, unit-test.

Dies ist mein test. Habe ich richtig gespritzt die q-service, aber ich nicht sicher bin, was sollte ich zurück von der "confirmDeleteDialog" spy...

describe("has a delete method that should call delete message notification", function() {
            var deferred = $q.defer();
            spyOn(dialogFactory, "confirmDeleteDialog").and.returnValue(deferred.promise);

            spyOn(requestNotificationChannel, "deleteMessage");

            $scope.deleteMessage(5);
            deferred.resolve();

            it("delete message notification is called", function() {
                expect(requestNotificationChannel.deleteMessage).toHaveBeenCalled();
            });
        });

Aber ich erhalte expected spy deleteMessage to have been called. Das bedeutet, dass die result.then... Teil nicht ausgeführt. Was bin ich ?

InformationsquelleAutor der Frage Mdb | 2014-04-07

Schreibe einen Kommentar