jsTestDriverではテストコードの中にHTMLのDOM要素へアクセスできるらしいので、やってみた。下記のように書く。
TestCase("domTest", { setUp: function() { }, tearDown: function() { }, "test inner div document": function() { /*:DOC div = <div><p id="foo">bar</p></div>*/ tagP = this.div.getElementsByTagName("p"); assertEquals("bar", tagP[0].innerText); } });
ポイントは、DOCで宣言したものには "this.div"のようにして参照するということ。
つまり、たとえば
function getDivValue(id) { return document.getElementById(id).innerText; }
みたいな関数を書いてしまうと、documentっていうグローバル変数にアクセスするため、テストしづらいということになりそうな感じ。
function getDivValue(dom, id) { return dom.getElementById(id).innerText; }
みたいにしろってこと??
そうすれば
TestCase("domTest", { "test inner div document": function() { /*:DOC div = <div><p id="foo">bar</p></div>*/ assertEquals("bar", getDivValue(this.div, "foo")); } });
こんな感じに書けるということかな・・・?