【问题标题】:Easily Load Mutiple Polymer Components in Karma在 Karma 中轻松加载多个聚合物组件
【发布时间】:2014-12-18 12:49:48
【问题描述】:

我正在开发一个使用 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">s,但只有第一个被 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 在测试之前加载它。但是,这三种解决方案都涉及手动编辑文件(或记住在测试文件的开头包含一些通常不存在的样板文件)。

有没有人知道为什么使用通配符模式似乎不起作用? Karma 似乎确实将 html 导入正确地添加到上下文 iframe 中,并且组件的 html 和 js 文件正在加载到浏览器中。组件似乎没有注册。

【问题讨论】:

    标签: polymer karma-runner


    【解决方案1】:

    不确定当您说“其余测试均失败”时的错误消息是什么样的。

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

    【讨论】:

      猜你喜欢
      • 2016-03-16
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      相关资源
      最近更新 更多