背景:次の方法で要素の作成を検証するため
に使用しています (これまでのところ正常に機能しています)。QUnit
DOM
$actual = Mylibrary.createSomething();
$expected = $('<div........');
ok($actual[0].isEqualNode($expected[0]),'Node properly created');
問題:メソッド
を使用すると、ノードの比較で問題が発生します。理由は次のとおりです。jQuery's .hide()
- それは生成します
style="display: none;"
(の後に余分なスペースはありません;
)Firefox
- それは
style="display: none; "
(の後の余分なスペース;
)を生成しますChrome
isEqualNode
style="display: none;"
それは異なると見なされstyle="display: none; "
ます(属性を異なる順序で持つことができ、isEqualNode
ノードは等しいと見なされますが、余分なスペースはそうではありません)。- を構築するとき
$expected
は、2 つの状況のうちの 1 つしか対応できません。
したがって、私のテストは、作成することを選択した状況で、Chrome
または状況に応じて常に失敗します。Firefox
$expected
ここにjsFiddleがあるので、私が何を意味するかがわかります
要素が隠されているかどうかを確認できます.is(':hidden')
が、それは私にとって理想的ではありません。
.isEqualNode
現在のように DOM要素のセット全体を比較することはできなくなり、同等のものを取得するには多くの個別のテストを作成する必要があり、テストが非常に広範になり、保守が困難になります。DOM
メソッド (例: ) を使用することで、メソッド(例: )isEqualNode
を使用した場合よりもテストが堅牢になると思います。これは、要素が最初に で生成され、非依存の検証メソッドを使用すると、問題が発見される可能性が高くなるからです。jQuery
.is(':hidden')
jQuery
jQuery
jQuery
のメソッドがバグ/問題として属性を.hide()
生成する方法との不一致が見られますか? stype="display
(つまり、http://bugs.jquery.com/で提起する必要があります)?
メソッドを使用せずにノードを比較できるソリューションはありjQuery
ますか?