Test de l'unité de service qui retourne promesse Angularjs Jasmin

ÉDITÉ par Michal Charemza post.

J'ai un service qui représente angularui boîte de dialogue modale:

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
    };

});

Sur l'appel de la méthode delete si l'utilisateur a cliqué sur Ok dans la boîte de dialogue requestNotificationChannel.deleteMessage(id) est exécutée.

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

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

Le problème est que je ne suis pas capable de l'unité de test.

C'est mon test. J'ai bien injecté le q de service mais je ne suis pas sûr de ce que doit je reviens de "confirmDeleteDialog" espion...

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();
            });
        });

Mais je reçois expected spy deleteMessage to have been called. Ce qui signifie que le result.then... la partie n'est pas exécutée. Ce qui me manque ?

InformationsquelleAutor Mdb | 2014-04-07