与templateUrl指令 - 与NG-html2js测试 [英] Directive with templateUrl - testing with ng-html2js
问题描述
我创建了联模板指令,对其进行了测试,一切正常。现在,我已经把模板到分离.html文件,并通过 templateUrl
从指令引用它。指令作品在我的页面上,但测试是破句古话:
I created a directive with inline template, tested it, everything worked fine. Now I have put the template into separated .html file and reference it via templateUrl
from directive. Directive works on my page, but the tests are broken saying:
Error: [$injector:modulerr] Failed to instantiate module source/html/par
tials/template-directive-my-directive.html due to:
Error: [$injector:nomod] Module 'source/html/partials/template-directive
-my-directive.html' is not available! You either misspelled the module name
or forgot to load it. If registering a module ensure that you specify the depend
encies as the second argument.
我用 NG-html2js preprocessor 没有运气(上面的错误),想在我的业力的配置和单元测试模块加载不同的路径和prefixes。任何人都可以看到什么是错的(哪个路径,或者不同的东西?)?
I used ng-html2js preprocessor with no luck (the error above), trying different paths and prefixes in my karma config and unit test module loading. Can anybody see what is wrong (which path, or maybe something different?) ?
我的结构是:
ui/Gruntfile.js // contains the karma config
ui/source/html/index.html
ui/source/html/partials/template-directive-my-directive.html
ui/source/js/my-directive.js
ui/source/tests/unit/unit-my-directive.js
在Gruntfile.js的:
Inside of Gruntfile.js:
karma : {
unit : {
options : {
files : [
'source/lib/angular/angular.js', // angular first
'source/lib/angular/*.js', // then any other angular files...
'source/lib/x2js/xml2json.min.js',
'source/lib/jquery/jquery.js',
'source/lib/ui-bootstrap/ui-bootstrap.js',
'source/js/*.js',
'source/tests/unit/*.js',
'source/html/partials/*.html', // because of directive templates
],
autoWatch : true,
frameworks : ['jasmine', 'detectBrowsers'],
plugins : [
'karma-junit-reporter',
'karma-jasmine',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-ie-launcher',
'karma-safari-launcher',
'karma-opera-launcher',
'karma-phantomjs-launcher',
'karma-detect-browsers'
],
// generate js files from html templates to expose them during testing
preprocessors : {
'source/html/partials/*.html' : 'ng-html2js'
}
// ,
// ngHtml2JsPreprocessor : {
// stripPrefix : 'source/html/', // tried this, no luck
// moduleName: 'foo' // tried this, no luck
// }
}
}
}
在我的测试(单元-MY-directive.js)的:
Inside of my test (unit-my-directive.js):
// load the template
beforeEach(module('source/html/partials/template-directive-my-directive.html'));
在我的指令(MY-directive.js):
Inside of my directive (my-directive.js):
templateUrl : 'partials/template-directive-my-directive.html', // this is ok, because actual app works
运行 UI
文件夹,其中Gruntfile.js所在
Running the test from within ui
folder, where the Gruntfile.js resides
推荐答案
解决方案:
之后,我花了几个小时,这 ST答案帮助了我。所有我需要的是注册NG-html2js因果报应插件
Solution: after I spent hours, this ST answer helped me. All I needed is to register ng-html2js in karma plugins
plugins : [
'karma-junit-reporter',
'karma-jasmine',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-ie-launcher',
'karma-safari-launcher',
'karma-opera-launcher',
'karma-phantomjs-launcher',
'karma-detect-browsers',
'karma-ng-html2js-preprocessor' //added this
],
这篇关于与templateUrl指令 - 与NG-html2js测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!