This is my app.js file.
var famboxWebApp = angular.module('famboxWebApp', [ 'ngAnimate', 'ngCookies', 'ngResource', 'ngRoute', 'ngSanitize', 'ngTouch', 'pascalprecht.translate', // angular-translate 'tmh.dynamicLocale',// angular-dynamic-locale 'ui.bootstrap' ]) .constant('LOCALES', { 'locales': { 'hy_AM': 'Armenia', 'ru_RU': 'Russian', 'en_US': 'English' }, 'preferredLocale': 'en_US' }) .config(function ($routeProvider, $locationProvider) { $routeProvider .when('/:language', { templateUrl:'views/main.html', controller: 'MainCtrl', controllerAs: 'main' }) ---------------- }) This is the main.js file.
angular.module('famboxWebApp') .controller('MainCtrl', function ($http, $scope, $routeParams,$rootScope) { $scope.commonUrl = COMMON_URL; $rootScope.$watch('CURRENT_LANGUAGE', function() { $scope.currentLang = $rootScope.CURRENT_LANGUAGE; }); $scope.homePageFirstSlider = function () { $http({ method: 'GET', url: COMMON_URL + CURRENT_LANGUAGE + '/api/getslideritems/main' }).then(function successCallback(response) { $scope.Data = response.data; $scope.loadCss('mainCarousel'); }, function errorCallback(response) { // location.href = "404.html"; }); }; $scope.homePageFirstSlider(); }); This is a Karma / Jasmine test.
describe('test Angular JS project', function() { beforeEach(module('famboxWebApp')); beforeEach(module('ngAnimate')); beforeEach(module('ngCookies')); beforeEach(module('ngResource')); beforeEach(module('ngRoute')); beforeEach(module('ngSanitize')); beforeEach(module('ngTouch')); beforeEach(module('pascalprecht.translate')); beforeEach(module('tmh.dynamicLocale')); beforeEach(module('ui.bootstrap')); var scope; var controller; var httpBackend; beforeEach(module(function ( $translateProvider) { $translateProvider.useLoader(); })); beforeEach(inject(function ( $rootScope, $controller, _$httpBackend_) { scope = $rootScope.$new(); httpBackend = _$httpBackend_; var controller = $controller('MainCtrl', { $scope:scope //$routeParams: {} }); })); it("test getslideritems", inject(function ($httpBackend) { var jsonlist = [{"id":"1","link":"..\/Smart#Smart","uri":"pesacun-krkesic","time":null,"year":"2011","image":"slide1.png","videoName":"The Fianc\u00e9 from Circus","genre":["Comedy"],"country":["Armenia"],"countryImage":["AM.png"]},{"id":"52","link":"vana-tsovun-arshaluysy","uri":"vana-tsovun-arshaluysy","time":"93 min.","year":"2011","image":"slide5.png","videoName":"Sunrise over Lake Van","genre":["Melodrama"],"country":["Armenia"],"countryImage":["AM.png"]},{"id":"61","link":"yerankyuni","uri":"yerankyuni","time":"84 min.","year":"1967","image":"yerankyuni.png","videoName":"\u0422riangle","genre":["Historic "],"country":["Armenia"],"countryImage":["AM.png"]},{"id":"58","link":"arajin-siro-ergy","uri":"arajin-siro-ergy","time":"109 min.","year":"1958","image":"arajin-siro-ergy.png","videoName":"The song of the first love","genre":["Melodrama"],"country":["Armenia"],"countryImage":["AM.png"]}]; $httpBackend.whenGET('views/main.html').respond(); $httpBackend.whenGET(COMMON_URL + CURRENT_LANGUAGE + '/api/getslideritems/main').respond(200, jsonlist); $httpBackend.expectGET('/eng/api/getslideritems/main'); var json = [[{"id":"81","videoType":"musics","videoTypeName":"musics","rating":"{\"kinopoisk_rating\":\"0\",\"imdb_rating\":\"0\"}","fambox_rating":"0","uri":"tigran-petrosyan-um","year":"2012","content":"Music: Hayko, lyrics by: Vardan Zadoyan, producer: Artyom Hakobyan, Mihran Stepanyan, information sponsor : \"Day TV\"","videoName":"Tigran Petrosyan \"Whom\"","price":"0","serialId":"0","watchList":false,"seasonId":"0","serial_number":"0","genre":["HIP-HOP"],"countryName":["Armenia"],"video_main":["Tigran_Petrosyan_um.png"],"country_image":["AM.png"]},{"id":"82","videoType":"musics","videoTypeName":"musics","rating":"{\"kinopoisk_rating\":\"0\",\"imdb_rating\":\"0\"}","fambox_rating":"0","uri":"tigran-petrosyan-kgam","year":"2012","content":"Music: Hayko, lyrics by: Vardan Zadoyan, producer: Nur, information sponsor : \"Day TV\".","videoName":"Tigran Petrosyan \"I will come\"","price":"0","serialId":"0","watchList":false,"seasonId":"0","serial_number":"0","genre":["HIP-HOP"],"countryName":["Armenia"],"video_main":["Tigran_Petrosyan_kgam.png"],"country_image":["AM.png"]}],2]; $httpBackend.whenGET(COMMON_URL + CURRENT_LANGUAGE + '/api/home/musics/main/0/8').respond(200, json); $httpBackend.expectGET('/eng/api/home/musics/main/0/8'); $httpBackend.flush(); scope.name; scope.homePageFirstSlider(); expect(scope.Data).not.toEqual([]); console.log(scope.Data); console.log(scope.DataTvMusic); })); }); Mistake:
TypeError: $ scope.loadCss is not a function at successCallback (/var/www/html/famboxv2/public/scripts/controllers/main.js:28:28) at processQueue (/ var / www / html / famboxv2 / public / bower_components / angular / angular.js: 15552: 28) at /var/www/html/famboxv2/public/bower_components/angular / triangular.js:15568:27 at Scope. $ eval (/ var / www / html / famboxv2 / public / bower_components / angular / angular.js: 16820: 28) at Scope. $ digest (/var/www/html/famboxv2/public/bower_components/angular/angular.js:16636:31) at Scope. $ apply (/ var / www / html / famboxv2 / public / bower_components / angular / angular.js: 16928: 24) at done (/var/www/html/famboxv2/public/bower_components/angular/angular.angular.js:11266:47) at handleResponse (/var/www/html/famboxv2/public/bower_components/angular-mocks/angular-mocks.js:1352:9) at Function. $ httpBackend.flush (/ var / www / html / famboxv2 / public / bower_components / angular -mocks / angular-mocks.js: 1788: 26) at Object. (tests / getslideritems-main.js: 110: 15) Error: Declaration: at window.inject.angular.mock.inject (/var/www/html/famboxv2/public/bower_components/angular-mocks/angular-mocks.js : 2778: 25) at Suite. (tests / getslideritems-main.js: 100: 28) at tests / getslideritems-main.js: 71: 1 PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs) PhantomJS 2.1 .1 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
When the next line is closed in mian.js, $ scope.loadCss ('mainCarousel'); then everything works for me, I get json and can compare. What is the problem?
karma.conf.js file
module.exports = function(config) { config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '', // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: ['jasmine'], // list of files / patterns to load in the browser files: [ '../../public/bower_components/angular/angular.js', '../../public/bower_components/angular-i18n/angular-locale_aa.js' , '../../public/bower_components/angular-route/angular-route.js', '../../public/bower_components/angular-mocks/angular-mocks.js', '../../public/bower_components/jquery/dist/jquery.js', '../../public/bower_components/bootstrap/dist/js/bootstrap.js', '../../public/bower_components/angular-animate/angular-animate.js', '../../public/bower_components/angular-bootstrap/ui-bootstrap.js', '../../public/bower_components/angular-cookies/angular-cookies.js', '../../public/bower_components/angular-dynamic-locale/src/tmhDynamicLocale.js', '../../public/bower_components/angular-messages/angular-messages.js', '../../public/bower_components/angular-messages/angular-messages.js', '../../public/bower_components/angular-resource/angular-resource.js', '../../public/bower_components/angular-sanitize/angular-sanitize.js', '../../public/bower_components/angular-touch/angular-touch.js', '../../public/bower_components/angular-translate/angular-translate.js', '../../public/bower_components/angular-touch/angular-translate-loader-static-files.js' , '../../public/bower_components/angular-translate-handler-log/angular-translate-handler-log.js' , '../../public/bower_components/angular-translate-loader-static-files/angular-touch.js' , '../../public/bower_components/angular-translate-storage-cookie/angular-translate-storage-cookie.js' , '../../public/bower_components/angular-translate-storage-local/angular-translate-storage-local.js' , '../../public/bower_components/angular-translate-storage-local/angular-translate-storage-local.min.js' , '/node_modules/angular-translate-loader-pluggable/dist/angular-translate-loader-pluggable.js', '/node_modules/angular-translate-loader-pluggable/dist/angular-translate-loader-pluggable.min.js', '/node_modules/angular-translate-loader-pluggable/dist/angular-translate-loader-pluggable.min.js.map', '../../public/scripts/app.js', '../../public/scripts/controllers/main.js', 'tests/getslideritems-main.js' ], // list of files to exclude exclude: [ ], // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { }, // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['progress'], // web server port port: 9876, // enable / disable colors in the output (reporters and logs) colors: true, // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_INFO, // enable / disable watching file and executing tests whenever any file changes autoWatch: true, // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: ['Chrome', 'PhantomJS'], // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: false, // Concurrency level // how many browser should be started simultaneous concurrency: Infinity }) }