2016-04-22 10 views
1

Ich versuche zu testen, ob mein Array (Speicher) noch ein Element mit Jasmine bekam. Ich habe mehrere Versprechen Kette, aber ich kann nicht in die erste eingeben, nichts passiert in das Versprechen (.then).restangular mehrere Versprechen Jasmin

Dies ist mein Test:

_this.provider = provider.data; 
_this.instance.additional_values.storage = []; 

_this.createVolume = function (volume) { 
    var newvol = angular.copy(volume); 

    //reset input and select 
    angular.copy({},volume); 

    return _this.provider.priceStorage(newvol.kind).then(function (resp) { 
     ... 
     return _this.provider.priceSnapshot(); 
    }) 
    .then(function (resp) { 
     _this.instance.additional_values.storage.push(newvol); 
    }); 
    }; 

Als ich console.log ctrl.provider.priceStorage() ich diese haben

d:

beforeEach(inject(function ($state, $controller, $rootScope, $q) { 
    state = $state.get('app.provision_requests_create'); 
    ctrl = $controller('ProvisionRequestsCreateCtrl', { 
     $scope: $rootScope.$new(), 
     provider: { 
     data: { 
      priceStorage: function() { 
      return $q(function (resolve) { 
       resolve({ data: [] }); 
      }); 
      } 
     } 
     } 
    }); 
    })); 

    describe("should test add Volume", function() { 
    it('should remove volume properly ', function() { 

     ctrl.createVolume(volume); 
     ctrl.provider.priceStorage().then(function(){ 
     console.log('ok'); 
     }); 

    }); 

Diese meine Funktion ist {$$ state: Objekt {Status: 1, Wert: Objekt {Daten: ...}}}

Als ich ctrl.createVolume() console.log, ich habe diesen

d {$$ Zustand: Object {status: 0}}

Antwort

2

ctrl.provider.priceStorage() ist ein Versprechen.

Versprechen werden auf diese Weise getestet:

ctrl.provider.priceStorage().then(function (result) { 
    expect(result).toEqual(...); 
    }); 
    $rootScope.$digest(); 

Verwendung Jasmine Promise matchers Versprechen Ketten in Spezifikationen zu glätten.

+0

danke, aber ich weiß, dass das Problem ist nichts passiert in meinem Versprechen, auch wenn ich schreibe was auch immer dies erwartet (Ergebnis) .toEqual ('okokok'); Ich habe kein Ergebnis, keinen Fehler, nichts ... – user3703539

+0

@ user3703539 Verwenden Sie $ rootScope. $ Digest(), um $ q-Ketten in Spezifikationen auszulösen. – estus

+0

Es ist richtig $ rootScope. $ Digest(); muss benutzt werden! – user3703539