gpt4 book ai didi

unit-testing - polymer 单元测试模拟依赖项

转载 作者:行者123 更新时间:2023-12-04 12:53:48 25 4
gpt4 key购买 nike

我刚开始接触 polymer 。我正在尝试对具有依赖项的自定义元素进行单元测试,我想伪造/模拟这些元素。
我找到了 Scott Miles 关于如何模拟核心 ajax 实现的建议。我以为我可以轻松地遵循该模式,但这仅在我的元素不导入即将被模拟(在这种情况下为 core-ajax)元素时才有效。
如果它确实导入了它,那么当测试尝试运行时我得到

'Uncaught NotSupportedError:无法在'Document'上执行'registerElement':类型'core-ajax'的注册失败。具有该名称的类型已被注册。

如果我可以做一些像 document.unregister 核心 ajax 元素并在我的测试中再次导入它的事情,我会成为一个更快乐的开发者!!!
Polymer 很棒,但如果我不能对其进行单元测试,那么它会带来重大风险(至少在构建需要维护/更改的应用程序时)

你们是如何解决这个问题的?我一直在研究 Polymer 和 PolymerLab 元素存储库,其中大部分都缺乏测试。到目前为止,我还没有找到太多关于如何做到这一点的引用资料。

谢谢您的帮助!

圣地亚哥

Scotts 的建议是:

不要导入 core-ajax/core-ajax.html,而是创建您自己的 core-ajax 元素。

<polymer-element name="core-ajax" attributes="response">
<script>
Polymer('core-ajax', {
attached: function() {
this.response = ['a', 'b', 'c'];
}
});
</script>
</polymer-element>

显然,这只是一个示例,实际实现取决于所需的模拟行为。

这只是解决它的一种方法,还有许多其他方法。我很想听听您觉得(不)方便的内容。

最佳答案

这个问题有点老了。我想我会提供更新,因为这是一种很常见的情况。

Polymer CLI 是单元测试 Polymer 元素的推荐方法。它用于测试的底层库称为 web-component-tester (WCT)。 WCT 支持 stub 元素。基本上,如果您的一个测试依赖于另一个元素来返回数据,您可以创建一个始终返回一致数据的该元素的 stub 。

用于指定 stub 元素的单元测试代码中的 JS:

setup(function() {
replace('paper-button').with('fake-paper-button');
});

要测试的元素:
<dom-module id='x-el'>
<template>
<paper-button id="pb">button</paper-button>
</template>
</dom-module>

在测试运行时,内容模板将被标记为:
<dom-module id='x-el'>
<template>
<fake-paper-button id="pb">button</fake-paper-button>
</template>
</dom-module>

https://www.polymer-project.org/1.0/docs/tools/tests#create-stub-elements

关于unit-testing - polymer 单元测试模拟依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26092109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com