tetsunosukeのnotebook

tetsunosukeのメモです

(メモ) jsTestDriver で HtmlDocを使う

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"));
  }
});

こんな感じに書けるということかな・・・?