2017-09-22 18 views
0

私はクラウドへの投稿要求を行い、応答を返し、URLを構築し、同じリクエストを取得します。 get要求は、フロントエンドでレンダリングされるPDFファイルを構築するための配列バッファを返します。ユニットテストジャスミンで角張ったJs

誰かが私に新しいテスト領域であるユニットテストとユニットテストの方法についてアドバイスをしてもらえますか? PFB私のコード

$scope.viewfile = function(name) { 
       $http({ 
       method : 'POST', 
       url : '/search/searchFiles',  
       data : {'currentdropdownvalue' : name} , 
      }). 
      success(function(data){ 
       if (!angular.isUndefined(data.docs[0])){ 
       $scope.file = data.docs[0]._id; 
       var fileUrl = $scope.cloudantUrl + $scope.file +"/"+ $scope.file;  
       $http.get(fileUrl {responseType:'arraybuffer'}) 
       .success(function (response) { 
        var file = new Blob([response], {type: 'application/pdf'}); 
        var fileURL = URL.createObjectURL(file); 
        $scope.content = $sce.trustAsResourceUrl(fileURL); 
        $scope.contentType = "application/pdf"; 
        $scope.contentWords = null; 
       }).error(function(data){ 
        console.log("Printing Error inside Post of view " , data); 
       }); 
       } 
        else{ 
         $scope.content = null; 
         $scope.contentWords = "File is not available for the selected Name"; 
        } 



      }). 
      error(function(data){ 
       console.log("Printing Error inside view " , data); 
      }); 
     }; 
    } 
+0

は、HTTPが – MatTaNg

+0

を呼び出しモックと$ httpBackendを使用することができ、私はそのアイデアを使用して、私が持っているでしょう – user6591323

+0

それを構築できるように、モックアップやいくつかのサンプルを投稿してください可能性がありあなたのドキュメントを参照するだけです:https://docs.angularjs.org/api/ngMock/service/$httpBackend私は$ httpBackendの専門家からは遠いです。私は通常、$ httpオブジェクトにスパイを置き、基本的に同じことをするような気持ちを返すようにします。あなたは$ httpBackendを使うはずです。 – MatTaNg

答えて

0

理想的には、おそらく$ httpBackendを使用する必要がありますが、私は通常は、これらの機能にスパイを入れてしまいます。 spyOnを使用して相続人は、いくつかのsudoコード:

it('Should test viewFile', function() { 
     spyOn($http, 'POST').andReturn(mock_data); 
     spyOn($http, 'GET').andCallFake(function(fileUrl) { 
      expect(fileUrl).toBe($scope.cloudantUrl + $scope.file +"/"+ $scope.file); 
     }); 
     $scope.viewFile(mocked_name).then(function() { 
      expect($scope.content).toBe($sce.trustAsResourceUrl(fileURL)); 
      expect($scope.contentType).toBe("application/pdf"); 
      expect($scope.contentWords.toBe(null); 
     }); 

     $rootScope.$apply(); 
    }); 
関連する問題