Web 组件(仅针对此问题的自治自定义元素)可以通过多种方式“栩栩如生”。
以下三个选项之间是否存在显着差异?
选项1:
const foo = document.createElement('foo-element');
document.body.appendChild(foo);
选项 2:
const div = document.createElement('div');
div.innerHTML = '<foo-element></foo-element>'
const foo = div.firstElementChild;
document.body.appendChild(foo);
选项 3:
const foo = new FooElement;
document.body.appendChild(foo);
我基于 Karma/Mocha 堆栈编写了一些单元测试,并使用选项 3 创建了我的实例。
这是否足够,这意味着,我可以使用任何一种方法依赖具有相同状态/行为的组件,还是有必要重复我的所有测试并应用所有不同的实例化选项?
document.createElement
由于错误,我的一个 Web 组件无法使用实例化:
VM977:1 Uncaught DOMException: Failed to construct 'CustomElement': The result must not have attributes at <anonymous>:1:10
可以毫无问题地实例化相同的组件这一事实new
告诉我,在幕后,必须存在显着差异,尤其是在new FooElement
和之间document.createElement('foo-element')
。
当然,我可以编写三个通用测试来测试所有三种实例化方式,但这是否足够?
还是应该使用所有 3 个实例化选项来运行我所有现有的测试?
或者换个方式问:
每个实例实例化后是否完全相同?(假设没有错误)