我正在为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。
我错过了什么?
答案 0 :(得分:2)
我的karma.config文件有不正确的基本URL来访问模板缓存中的模板(我使用html2js)。所以基本上模板不可用,所以指令从不编译,这就是为什么永远不会创建隔离范围的原因。