angular的#isolateScope()返回undefined

时间:2014-12-11 21:04:25

标签: angularjs unit-testing chai

我正在为this directive编写一个测试,我相信我正确地进行了测试,但是当我尝试访问isolateScope时,我得到了未定义。

指令:

describe('directive: deposit-note', function() {
  var expect = chai.expect;

  var element,
      scope,
      $rootScope,
      $compile,
      $httpBackend;

  beforeEach(module('directives.depositnote'));

  beforeEach(inject(function (_$compile_, _$rootScope_) {
      $compile = _$compile_;
      $rootScope = _$rootScope_;
  }));

  beforeEach(inject(function($injector) {
    $httpBackend = $injector.get('$httpBackend');
  }));

  describe('with a filled-out transaction object', function() {

    beforeEach(inject(function($injector) {
      $httpBackend.whenGET('/templates/depositnote.tpl.html').respond(200, '');
      scope = $rootScope.$new();

      element = '<deposit-note checknumber="transaction.checkNumber" checktype="transaction.checkType.value" depositnote="transaction.depositNote" />';

      scope.transaction = {
        "checkNumber": "1234",
        "checkType": "CASHIERS CHK",
        "depositNote": "In Person"
      };

      element = $compile(element)(scope);
      scope.$digest();
    }));

    it("should calculate the correct remaining characters", function() {
      var isolated = element.isolateScope();
      expect(isolated.totalRemaining).toBe(17);
    });  
  });
});

当我逐步执行此操作时,我看到元素被编译,并且chrome的devtools显示element.isolateScope()确实是元素上的方法,但它返回undefined。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我的karma.config文件有不正确的基本URL来访问模板缓存中的模板(我使用html2js)。所以基本上模板不可用,所以指令从不编译,这就是为什么永远不会创建隔离范围的原因。