我正在尝试使用Jasmine编写测试JavaScript代码,其中包含DOM元素,但无法正常工作。当我仅针对JavaScript代码进行测试时(只是一些简单的函数,但不是针对DOM元素),它可以正常工作。我已经研究了很长时间,但仍然找不到答案。我还尝试使用jsdom,因为在测试DOM元素时应该使用它,但我始终收到一堆错误信息。是否有任何“简单”的方法仅使用Jasmine测试DOM元素?
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 } };
- Heretic Monkey