1

我想用业力和茉莉花测试一个角度指令。该指令使用名为 complete.html 的外部模板。

我尝试使用以下代码获取 html 模板:

describe('directive', function () {

beforeEach(module('sampleapp'));

it('test',
    function(){


        inject(function ($rootScope, $compile) {

            var $scope = $rootScope.$new();
            var element = $compile(angular.element('<auto-complete></auto-complete>'))($scope);
              $scope.$digest();
            var textarea = element.find('textarea');
            expect(textarea.length).toBe(1);



        });
    }

); });

然后我收到此错误:

Error: Unexpected request: GET test/complete.html

我搜索了我的问题的解决方案并找到了这篇文章: Unit Testing AngularJS directive with templateUrl

我按照业力解决方案的说明进行操作。我的 karma.conf.js 如下所示:

  plugins : [
      'karma-ng-html2js-preprocessor',
      'karma-chrome-launcher',
      'karma-jasmine'
],

  // preprocess matching files before serving them to the browser
  // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
  preprocessors: {
      '../complete.html': ['ng-html2js']
  },


  ngHtml2JsPreprocessor: {
      moduleName: "complete.html"
  },

  // frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],


// list of files / patterns to load in the browser
files: [
    '../src/main/web/bower_components/jquery/dist/jquery.min.js' ,
    '../src/main/web/bower_components/angular/angular.min.js' ,
    '../src/main/web/bower_components/angular-route/angular-route.js',
    '../src/main/web/bower_components/angular-mocks/angular-mocks.js',
    '../complete.html',
    '../src/main/web/scripts/application.js',
    '../src/main/web/scripts/main.js',
    '../src/main/web/scripts/service.js',
    '../src/main/web/scripts/plz.json',
  'tests.js'

],

(我明显剪掉了不必要的部分)

然后按照指示,我尝试在我的测试文件中加载生成的模块 complete.html:

describe('directive', function () {

beforeEach(module('sampleapp'));
beforeEach(module('complete.html'));


it('test',
    function(){


        inject(function ($rootScope, $compile) {

            var $scope = $rootScope.$new();
            var element = $compile(angular.element('<auto-complete></auto-complete>'))($scope);
              $scope.$digest();
            var textarea = element.find('textarea');
            expect(textarea.length).toBe(1);



        });
    }

);});

但我仍然得到错误Error: Unexpected request: GET test/complete.html

我觉得我错过了一个重要的部分,但无法为我所处的情况找到一个完整的解决方案。我如何正确使用生成的模块,这样我就不会收到错误?

我会非常感谢一些帮助。

4

0 回答 0