Jasmin: Asynchrone callback wurde nicht aufgerufen, innerhalb von timeout angegeben, die von Jasmin.DEFAULT_TIMEOUT_INTERVAL

Ich habe ein eckiges service namens 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
    };

});

Ich versuche, Komponententest dieser service mit 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();       
    });
});

Lese ich über die Asynchrone Unterstützung in Jasmin, aber da bin ich ziemlich neu zu unit-Tests mit javascript konnte nicht damit es funktioniert.

Ich erhalte eine Fehlermeldung :

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

und mein test dauert zu lange zum ausführen (etwa 5s).

Kann mir jemand helfen die Bereitstellung von arbeiten Beispiel von meinem code mit einer Erläuterung?

Die Verarbeitung von Ereignissen erfolgt in der Regel in einem digest-Zyklus. Versuchen Sie, hinzufügen von scope.$anwenden() in den test statt mit Jasmine async-Test-Muster
dies hat auch nicht geklappt. Ich fügte hinzu, scope.$apply(); einfach nach dem Aufruf requestNotificationChannel.deleteMessage(1, 4), aber ich receivethe gleiche Fehlermeldung...
Ich bekomme den gleichen Fehler, wenn async-tests dauern länger als Jest erwartet - sehr Häufig beim Debuggen und nehmen einige Zeit, um untersuchen Variablen.

InformationsquelleAutor Mdb | 2014-03-24

Schreibe einen Kommentar