我正在为指令编写测试。我希望传入templateURL,然后使用内置的JQlite库测试它的各种功能。
出于某种原因,我的模板似乎没有编译,尽管Jasmine没有给我任何错误。
我的相关应用结构是:
/app
../partials/
../tests/
我的karma.conf设置如此:
files: [
...
'tests/*.js',
'partials/*.html'
],
preprocessors: {
'partials/*.html':'ng-html2js'
},
plugins: [
'karma-chrome-launcher',
'karma-jasmine',
'karma-ng-html2js-preprocessor',
'karma
]
我的测试代码如下:
describe('mapInputs.customForm', function () {
var elm, scope;
beforeEach(module('myApp'));
beforeEach(module('partials/test/tmpl.html'));
beforeEach(inject( function (_$rootScope_, _$compile_) {
$rootScope = _$rootScope_;
$compile = _$compile_;
elm = angular.element('<div><ng-map-inputs map-inputs=""></ng-map-inputs></div>');
console.log('elm', elm);
elm = $compile(elm)($rootScope);
$rootScope.$digest();
console.log('elm', elm);
}));
it('should reveal custom form', function () {
// elm.find('div') returns an empty object
});
});
输出:
LOG: 'elm', Object{length: 1, 0: <div><ng-map-inputs map-inputs=""></ng-map-inputs></div>}
LOG: 'elm', Object{length: 1, 0: <div class="ng-scope"><ng-map-inputs map-inputs=""></ng-map-inputs></div>}
正如我所说,我没有收到任何错误,但控制台日志的输出并不是我所期望的。好像模板没有被编译?但是,如果找不到模板,Jasmine肯定会抱怨吗?
答案 0 :(得分:0)
对我来说,问题是我没有在karma.conf.js
加载实际指令:
files: [
...
'path/to/directive/map-inputs.directive.js', // <-- wasn't being loaded before
'tests/*.js',
'partials/*.html'
],