我是角度测试的新手。使用jasmine测试角度代码时遇到一些问题。
如果您阅读我的问题并尝试解决我的问题,我会非常感激,因为我用Google搜索但找不到任何令人满意的解决方案
这是我的角度应用
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等于用户,我想测试这个控制器。使用jasmine进行测试。这是spec文件。
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,angular-mocks.js等
有三个问题:
[$injector:unpr] http://errors.angularjs.org/1.4.4/$injector/unpr?p0=interceptorServiceProvide
app.config
块上出现$httpProvider
错误
在行的spec.js中 ReferenceError: $controller is not defined
var my_controller = $ controller('myController',{user:user});
如何在期望区块中测试scope.user
是否等于user
?
答案 0 :(得分:1)
1)检查this answer,关于$ http / $ httpBackend可能对您有所帮助 - 您可以对此进行调整以获得您正在寻找的答案
2)您是否已将$ controller(现在为$ httpProvider)声明为describe()块开头的变量?
3)你应该已经拥有了。至少在我看来,你的代码看起来应该像你想要的那样工作。