我正在处理使用Polymer组件编写的应用程序,并正致力于为我们的自定义组件自动执行某些单元测试。理想情况下,我希望能够拥有像
这样的东西files: [
'public/js/bower/platform/platform.js',
'node_modules/sinon/pkg/sinon-1.10.2.js',
'public/components/*.html',
{pattern: 'public/components/*.js', included: false, served: true},
{pattern: 'public/js/bower/**', included: false, served: true},
{pattern: 'public/js/*.js', included: false, served: true},
'test/components/polymer-*-tests.js'
],
在我的karma.confg.js
文件中,以便它加载我们将来添加的任何组件和测试,而无需手动添加它们。但是,虽然这对于components文件夹中的所有组件都正确地导致了<link rel="import">
,但只有第一个组件正在由Polymer正确注册(其余的测试都失败了)。如果我手动将每个组件添加到列表中,例如:
files: [
'public/js/bower/platform/platform.js',
'node_modules/sinon/pkg/sinon-1.10.2.js',
'public/components/poly-component-1.html',
'public/components/poly-component-2.html',
'public/components/poly-component-3.html',
{pattern: 'public/components/*.js', included: false, served: true},
{pattern: 'public/js/bower/**', included: false, served: true},
{pattern: 'public/js/*.js', included: false, served: true},
'test/components/polymer-*-tests.js'
],
然后一切正常。如果我添加类似于
的东西,我也会让它工作var link = document.createElement('link');
link.rel = 'import';
link.href = 'base/public/components/<component-name>.html;
document.getElementsByTagName('head')[0].appendChild(link);
在每个测试文件的开头,或使用
创建引导脚本components = [
'polymer-component-1',
'polymer-component-2',
'polymer-component-3'];
for (var i = 0; i < components.length; i++) {
var link = document.createElement('link');
link.rel = 'import';
link.href = '/base/public/components/' + components[i] + '.html';
document.getElementsByTagName('head')[0].appendChild(link);
}
并确保业力在测试之前加载它。但是,这三个解决方案都涉及手动编辑文件(或记住在测试文件的开头包含一些样板文件,通常不存在)。
有没有人有任何想法为什么使用通配符模式似乎不起作用? Karma似乎确实将html导入正确地添加到上下文iframe中,并且组件的html和js文件正被加载到浏览器中。组件似乎没有注册。
答案 0 :(得分:0)
当你说&#34;其余的测试都失败时,不确定是什么错误消息&#34;。
然而,我个人发现了类似的东西,但我把它归结为karma
可能包含我的html两次的问题。请参阅issue我将其登录到karma-runner项目以获取更多信息。