jasmine: Async de rappel n'a pas été invoquée dans délai spécifié par le jasmin.DEFAULT_TIMEOUT_INTERVAL

J'ai angulaire service appelé requestNotificationChannel:

app.factory("requestNotificationChannel", function($rootScope) {

    var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_";

    function deleteMessage(id, index) {
        $rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index });
    };

    return {
       deleteMessage: deleteMessage
    };

});

Je suis en train de test de l'unité de ce service à l'aide de jasmin:

"use strict";

describe("Request Notification Channel", function() {
    var requestNotificationChannel, rootScope, scope;

    beforeEach(function(_requestNotificationChannel_) {
        module("messageAppModule");

        inject(function($injector, _requestNotificationChannel_) {
            rootScope = $injector.get("$rootScope");
            scope = rootScope.$new();
            requestNotificationChannel = _requestNotificationChannel_;
        })

        spyOn(rootScope, '$broadcast');
    });


    it("should broadcast delete message notification", function(done) {

        requestNotificationChannel.deleteMessage(1, 4);
        expect(rootScope.$broadcast).toHaveBeenCalledWith("_DELETE_MESSAGE_", { id: 1, index: 4 });
        done();       
    });
});

J'ai lu sur le Asynchrones Soutien dans le Jasmin, mais comme je suis plutôt nouvelle pour les tests unitaires avec javascript ne pouvais pas le faire fonctionner.

Je reçois un message d'erreur :

Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL

et mon test est trop long à exécuter (environ 5s).

Quelqu'un peut-il m'aider en fournissant de travail exemple de mon code avec quelques explications?

Le traitement des événements est généralement fait dans un condensé de cycle. Essayez d'ajouter de la portée.$appliquer() à votre test au lieu d'utiliser Jasmin asynchrone test pattern
ce n'est pas travaillé. J'ai ajouté de la portée.$appliquer(); juste après l'appel de requestNotificationChannel.deleteMessage(1, 4), mais je receivethe même erreur...
Je reçois la même erreur lors de la async tests prennent plus de temps que Jest attend - très fréquent pendant le débogage et en prenant le temps d'inspecter des variables.

OriginalL'auteur Mdb | 2014-03-24