単体テストの正しい構文は何ですか?
ブラウザで開くと、次のように動作します。その意図は、入力ボックスib
が変更されるたびにその内容を読み取り、その解釈された値を表のセルに書き込むことc5
です...
var c5 = document.createElement('td');
var ib = document.createElement('input');
// For all browsers except IE before Version 9 -see http://help.dottoro.com/ljeuqqoq.php
if (ib.addEventListener)
{
ib.addEventListener('change', Action01InputBox (ib, c5), false);
}
// For IE before Version 9 -see http://help.dottoro.com/ljeuqqoq.php
else {
if (ib.attachEvent){
ib.addEventListener('change', Action01InputBox (ib, c5), false);
}
}
これがイベントリスナーです。もちろん、関数を返します。
NB関数EmptyNode(c5)
は、ターゲットノードのすべてのコンテンツを単純に削除しRealNumberFromInput (ib.value)
、正規表現を介して入力文字列から実数を取得します...
function Action01InputBox (ib, c5)
{
return function ()
{
EmptyNode(c5);
var r = RealNumberFromInput (ib.value);
c5.appendChild(document.createTextNode(r));
};
};
これが単体テストです...
Action01InputBoxTest = TestCase("Action01InputBoxTest");
Action01InputBoxTest.prototype.test01 = function()
{
// Text box
var r = 0.123;
var ib = document.createElement('input');
ib.setAttribute('value', document.createTextNode(r));
// Target cell
var c5 = document.createElement('td');
c5.appendChild(document.createTextNode("Bogus"));
// Do action
Action01InputBox(ib, c5);
assertEquals(c5.textContent, r);
};
textContent
ofc5
は "Bogus" から "0.123" に変更されているはずなので、テストは失敗します。
正しく理解すれば、問題はテストが関数ではなくイベントリスナーの戻り値を呼び出すことですが、テストから関数を適切に呼び出す方法がわかりません。
前もって感謝します。