angularjs - Unit testing Angular controller which uses ng-table gives error - Unknown provider: ngTableProvider <- ngTable -
i using yeoman angular-require generator. https://github.com/aaronallport/generator-angular-require 1 of controller uses ng-table. when unit testing controller, getting error: unknown provider: ngtableprovider <- ngtable.
i able utilize ng-table within webapp without issues. within unit test case, unable inject or add together module. please assist.
below setup: ng-table available within requirejs config paths. added in bootstrapping section well. define(['angular', 'ng-table', 'controllers/main'], function (angular, ngtable, mainctrl,) { homecoming angular.module('myapp', [ 'ngtable', 'myapp.controllers.mainctrl', 'ngcookies', 'ngresource', 'ngsanitize', 'ngroute' ]). config......
controller:
define(['angular'], function (angular) { 'use strict'; angular.module('myapp.controllers.mainctrl', []) .controller('mainctrl', function ($scope, ngtableparams) { $scope.awesomethings = [ 'html5 boilerplate', 'angularjs', 'karma' ]; $scope.tableparams = new ngtableparams({ page: 1, count: 5 }, { total: data.length, getdata: function($defer, params) { $defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count())); } }); }); }); test setup: ng-table available within requirejs config paths.
mainspec file:
define(['angular', 'angular-mocks', 'ng-table', 'app'], function(angular, mocks, ngtable, app) { 'use strict'; describe('controller: mainctrl', function () { // load controller's module beforeeach(module('scottsapp.controllers.mainctrl')); //not sure how inject ngtable //tried beforeeach(module('ngtableparams')); //tried beforeeach(module('ngtable')); //tried beforeeach(inject(function () {})); //nothing working.... var mainctrl, scope; // initialize controller , mock scope beforeeach(inject(function ($controller, $rootscope) { scope = $rootscope.$new(); mainctrl = $controller('mainctrl', { $scope: scope }); })); it('should attach list of awesomethings scope check controller load', function () { expect(scope.awesomethings.length).tobe(3); }); }); });
make sure include ng-table in karma.conf.js. solve problem.
// list of files / patterns load in browser files: [ 'bower_components/angular/angular.js', 'bower_components/angular-mocks/angular-mocks.js', 'bower_components/angular-animate/angular-animate.js', 'bower_components/angular-route/angular-route.js', 'bower_components/angular-sanitize/angular-sanitize.js', 'bower_components/ng-table/ng-table.js', 'app/scripts/**/*.js', 'test/mock/**/*.js', 'test/spec/**/*.js' ], angularjs unit-testing requirejs ngtable
No comments:
Post a Comment