在Karma中轻松加载多种聚合物组分

时间:2014-10-22 22:22:53

标签: polymer karma-runner

我正在处理使用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文件正被加载到浏览器中。组件似乎没有注册。

1 个答案:

答案 0 :(得分:0)

当你说&#34;其余的测试都失败时,不确定是什么错误消息&#34;。

然而,我个人发现了类似的东西,但我把它归结为karma可能包含我的html两次的问题。请参阅issue我将其登录到karma-runner项目以获取更多信息。