2017-03-26 1 views
0

Ich möchte meine dann und fangen Funktion von meinem $ scope.customerinfo testen. Das Problem ist, ich weiß nicht wie genau. Dann testen und fangen von einem Versprechen in eckigen

var app = angular.module('shop', ['ngRoute','ngResource']) 
     .factory('Customerservice', function ($resource) { 
      return $resource('http://localhost:8080/Shop/:customer',{customer: "@customer"}); 
    }) 
     .controller('customerController', function ($scope,Customerservice) { 
     $scope.customerinfo = CustomerService.get({customer: "Mark"}); 
     $scope.customerinfo.$promise.then(function(info) { 
      return info; 
     }).catch(function(errorResponse) { 
      throw errorResponse; 
     }); 
}); 

Im nicht getan noch nicht, aber das ist mein Jasmin Code

describe('Testing the customerinfo', function() { 
    var $scope; 
    var $q; 
    var deferred; 

    beforeEach(module('shop')); 

    beforeEach(inject(function($controller, _$rootScope_, _$q_) { 
    $q = _$q_; 
    $scope = _$rootScope_.$new(); 
    deferred = _$q_.defer(); 
    $controller('userController', { 
     $scope: $scope 
    }); 
    })); 
    it('should reject promise', function() { 
    // I want to check if the catch option is working 
    }); 
}); 

Wie genau kann ich das tun, oder muss ich den Code Refactoring?

+0

ich wirklich nicht den Punkt des Codes in der Steuerung verstehen: es bildet eine erfolgreiche Antwort auf die genaue gleiche erfolgreiche Antwort und bildet eine Fehlerantwort auf genau die gleiche Fehlerantwort ab. Und es tut sowieso nichts mit dem zurückgegebenen Versprechen. –

+0

der einzige Grund, warum ich das tue, ist, weil ich warten möchte, bis die async get Anfrage erledigt ist (ich bin nur ein Anfänger, aber es funktioniert auf diese Weise) Ich weiß, dass es nichts mit dem zurückgegebenen Versprechen thats, weil ich nicht fertig bin noch mit der Programmierung. Ich möchte gerade die Funktion then und catch testen. – member2

+0

Es gibt keine Möglichkeit, da sie keine Nebenwirkung haben und der Rückgabewert nirgends gespeichert wird. Es ist nur ein Noop. –

Antwort

1

Der Jasmin ‚it‘ Methode ein getan Parameter übernimmt, die Sie für Asynchron-Tests aufrufen

it('Should reject', function(done) { 
    someAsyncFunction().catch(function(result) { 
    expect(result.status).toBe(401); 
    done(); 
    }); 
}); 
Verwandte Themen