jasmineで動作しないDOM要素を含むJavaScriptコードのテストを作成しようとしています。これは、JavaScriptコードのみをテストするときに機能します(DOM要素ではなく単純な関数です)。私はずっと長い間研究してきており、実際に答えを見つけることはできません。 DOM要素をテストするときにjsdomを使用することになっていたので、私はjsdomも使用しようとしましたが、私はたくさんのエラーを受けています。 jasmineを使ってDOM要素をテストするのは簡単な方法はありますか?jasmineを使用してDOM要素でJavaScriptをテストする方法は?
はJavaScript:
var result;
var adding = function(one, two) {
var one1 = document.forms["myForm"]["one"].value;
var two1 = document.forms["myForm"]["two"].value;
result = parseInt(one1) + parseInt(two);
var number = document.getElementById("number");
number.innerHTML = result;
return result;
}
HTML:
<html>
<head> </head>
<body>
<form name="myForm">
<h4>numner 1</h4> <input type="text" name="one" id="one"></input>
<h4>number 2</h4> <input type="text" name="two" id="two"></input> <input type="submit" onclick="adding(one.value, two.value); return false;"> </form>
<p id="number"> </p>
</body>
</html>
私のテスト仕様:テストのために
describe("additions", function() {
it("result should add two numbers", function() {
var final = adding(5, 1);
expect(final).toEqual(6);
});
})
私は常に取得しています:
未定義のプロパティ 'one'を読み取ることができません。私は
var one1 = document.forms["myForm"]["one"].value; var two1 = document.forms["myForm"]["two"].value;
は、この例では奇妙に見えますが、私の実際のコードははるかに大きかった(それは私の質問のために必要はありませんように私は、全体のコードを投稿したくなかった)、それことを知っている
私はそれをここに含めなければなりませんでした(おそらくそれはテストに影響します)。
テストでフォームを模擬してください。 'document.forms.myForm = {one:{value:5}、two:{value:1}};' –
私はテストのために/ whereをどのように使用するのか分かりません。指定していただけますか?ありがとうございます。 – javascript2016