角度テストを初めて使用しています。ジャスミンを使用して角度コードをテストする際の問題に直面しています。
非常にあなたが私の質問を読んで、私の問題を解決しようと、私はそれをググとしてではなくここで任意の満足できる解決策に
を見つけることができなかった場合、私の角度アプリは
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
エラーに直面し
- :
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
ReferenceError: $controller is not defined
in spec.js linevar my_controller = $ controller( 'myController'、{user:user});
scope.user
が期待ブロックでuser
に等しいかどうかをテストするにはどうすればよいですか?
あなたは 'interceptorService'を持っていますか?または、使用しているモジュールのいずれかに存在する必要がありますか? – tasseKATT
あなたのコントローラーで$ httpをどうしますか? APIを使用して一部のデータを取得するだけの場合は、そのサービスをコントローラから削除し、それらのアイテムを取得する独自のサービスを注入します。私はあなたのコントローラをよりきれいにするようにしていますので、それらの依存関係をすべて注入することなくテストする方が簡単です。 – Maccurt
もコントローラに$ scopeを挿入しないでください。コントローラを構文として使用する必要があります。 – Maccurt