如何确保克隆的 HTML 节点具有特定的 属性 (单元测试时)?
How can I ensure that a cloned HTML node has a specific property (when Unit Testing)?
我正在使用
创建一个 HTML 克隆
var clone = document.getElementById('tempID').cloneNode(true);
然后,我想使用 clone['id'] = newUniqueID;
编辑 ID(我正在创建多个克隆,因此每个克隆都有自己的 ID)
这在 运行 应用程序时有效,但单元测试不允许,它给出了这个错误:
Property 'id' does not exist on type 'Node'
我尝试将这两行放在这个 if 语句中,以保证该元素存在,但我在单元测试中仍然遇到相同的错误:
if(document.getElementById('tempID') !== null){
var clone = document.getElementById('tempID').cloneNode(true);
clone['id'] = newUniqueID;
}
在这种情况下,使用clone['id']
时id是保证存在的,那么为什么单元测试声称它不存在呢?解决方法是什么?
注意:由于此错误,整个测试套件无法 运行,因此这不是特定测试的问题。
所以我想通了,我不得不改变:
var clone = document.getElementById('tempID').cloneNode(true);
对此:
var clone: any = document.getElementById('tempID')!.cloneNode(true);
我不确定为什么将其声明为 "any" 会对 id 产生影响,但我必须添加 !
运算符来告诉编译器该元素不为空。我的 post 中的 if 语句不是必需的。
我正在使用
创建一个 HTML 克隆var clone = document.getElementById('tempID').cloneNode(true);
然后,我想使用 clone['id'] = newUniqueID;
编辑 ID(我正在创建多个克隆,因此每个克隆都有自己的 ID)
这在 运行 应用程序时有效,但单元测试不允许,它给出了这个错误:
Property 'id' does not exist on type 'Node'
我尝试将这两行放在这个 if 语句中,以保证该元素存在,但我在单元测试中仍然遇到相同的错误:
if(document.getElementById('tempID') !== null){
var clone = document.getElementById('tempID').cloneNode(true);
clone['id'] = newUniqueID;
}
在这种情况下,使用clone['id']
时id是保证存在的,那么为什么单元测试声称它不存在呢?解决方法是什么?
注意:由于此错误,整个测试套件无法 运行,因此这不是特定测试的问题。
所以我想通了,我不得不改变:
var clone = document.getElementById('tempID').cloneNode(true);
对此:
var clone: any = document.getElementById('tempID')!.cloneNode(true);
我不确定为什么将其声明为 "any" 会对 id 产生影响,但我必须添加 !
运算符来告诉编译器该元素不为空。我的 post 中的 if 语句不是必需的。