2016-12-21 4 views
0

角度テストを初めて使用しています。ジャスミンを使用して角度コードをテストする際の問題に直面しています。

非常にあなたが私の質問を読んで、私の問題を解決しようと、私はそれをググとしてではなくここで任意の満足できる解決策に

を見つけることができなかった場合、私の角度アプリは

var app = angular.module('myApp', ['ngAnimate', 'ui.router', 'ui.bootstrap', 'toggle-switch', 
    'ngTagsInput', 'blockUI', 'ngBootbox', 'ui.select', 'ngSanitize', 'angular.filter']); 

app.config(["$httpProvider", "blockUIConfig", function ($httpProvider, blockUIConfig) { 
    'use strict'; 
    blockUIConfig.autoBlock = false; 
    $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
    $httpProvider.interceptors.push('interceptorService'); 
}]); 

されており、ここでは理解されるであろうコントローラファイル:

app.controller('myController', ['$scope', '$filter', '$http', '$window', '$ngBootbox', '$modal', 'dataservice', 'user', 'message_kinds', 
    function($scope, $filter, $http, $window, $bB, $modal, dataservice, user, message_kinds) { 
     $scope.user = user; 
     /controller logic/ 
}]); 

$ scope.userがuserまたはnot.Amと等しい場合、このコントローラをテストするには、テスト用にjasmineを使用します。ここにspecファイルがあります。 app.configブロックに[$injector:unpr] http://errors.angularjs.org/1.4.4/$injector/unpr?p0=interceptorServiceProvideエラーに直面し

  1. describe("myController", function() { 
    
        beforeEach(module('myApp')); 
    
        beforeEach(inject(function(_$controller_){ 
        $controller = _$controller_; 
        })); 
    
        describe("myController testing", function() { 
    
        it("should update scope.user", function() { 
         var user = {customer_id: 1}; 
         var my_controller = $controller('myController', { user: user }); 
         expect(my_controller.user).toEqual(user); 
        }); 
        }); 
    
    }); 
    

    私はまた、すべての依存関係SpecRunner.html

    でangular.jsのようなファイル、アンギュラmocks.jsなど

    持つ3つの問題が含まれています$httpProvider

  2. ReferenceError: $controller is not defined in spec.js line

    var my_controller = $ controller( 'myController'、{user:user});

  3. scope.userが期待ブロックでuserに等しいかどうかをテストするにはどうすればよいですか?

+1

あなたは 'interceptorService'を持っていますか?または、使用しているモジュールのいずれかに存在する必要がありますか? – tasseKATT

+0

あなたのコントローラーで$ httpをどうしますか? APIを使用して一部のデータを取得するだけの場合は、そのサービスをコントローラから削除し、それらのアイテムを取得する独自のサービスを注入します。私はあなたのコントローラをよりきれいにするようにしていますので、それらの依存関係をすべて注入することなくテストする方が簡単です。 – Maccurt

+0

もコントローラに$ scopeを挿入しないでください。コントローラを構文として使用する必要があります。 – Maccurt

答えて

1

1)に関して、this answerをチェック$ HTTP/$ httpBackendあなたを助けるかもしれない - あなたはあなたが$コントローラを宣言した

2)を探している答えを得るためにこれを適応することができます(と今は$ httpProvider)をdescribe()ブロックの先頭に変数として追加しますか?

3)これは既に必要です。あなたのコードは、少なくとも私が見ることができるように、あなたが望むように動作するように見えます。

+0

'$ httpProvider'に' inject'を挿入することはできません。そして、それは 'config'ですでに利用可能です。問題は 'interceptorService'です。 – estus

+0

@estusはいiaが同意します。実際の問題はinterceptorServiceです。 –

+0

@estusどうすれば解決できますか? –

関連する問題