【发布时间】:2016-06-16 00:55:30
【问题描述】:
我刚开始研究聚合物。我试图对具有依赖关系的自定义元素进行单元测试,我想伪造/模拟这些元素。 我找到了 Scott Miles 关于如何模拟 core-ajax 实现的建议。我以为我可以轻松地遵循该模式,但这仅适用于我的元素不导入即将被模拟的(在本例中为 core-ajax)元素。 如果确实导入了它,那么当测试尝试运行时,我会得到 p>
'Uncaught NotSupportedError: 无法在'Document' 上执行'registerElement': 'core-ajax' 类型的注册失败。已注册具有该名称的类型。
如果我可以做类似 document.unregister core-ajax 元素并在我的测试中再次导入它,我会是一个更快乐的开发者!!! Polymer 很棒,但如果我不能对其进行单元测试,那么它会带来重大风险(至少在构建需要维护/更改的应用程序时)
你们是如何解决这个问题的?我一直在研究 Polymer 和 PolymerLab 元素 repo,其中大多数都缺乏测试。到目前为止,我还没有找到太多关于如何做的参考。
感谢您的帮助!
圣地亚哥
Scotts 的建议是:
创建自己的 core-ajax 元素,而不是导入 core-ajax/core-ajax.html。
<polymer-element name="core-ajax" attributes="response">
<script>
Polymer('core-ajax', {
attached: function() {
this.response = ['a', 'b', 'c'];
}
});
</script>
</polymer-element>
显然,这只是一个示例,实际实现取决于所需的模拟行为。
这只是解决它的一种方法,还有很多其他方法。我很想听听您觉得什么方便(不方便)。
【问题讨论】:
-
同上。双重包含的整个错误是痛苦的。尚不确定如何解决此问题。
标签: unit-testing polymer