我正在尝试在 jasmine 中为包含 DOM 元素的 JavaScript 代码编写一个测试,但该测试不起作用。当我仅测试 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;
}
Run Code Online (Sandbox Code Playgroud)
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> …Run Code Online (Sandbox Code Playgroud) 我有一个功能:
var foo = function() {
document.write( bar() );
};
Run Code Online (Sandbox Code Playgroud)
我的Jasmine测试是:
describe('has a method, foo, that', function() {
it('calls bar', function() {
spyOn(window, 'bar').andReturn('');
foo();
expect(bar).toHaveBeenCalled();
});
});
Run Code Online (Sandbox Code Playgroud)
我的问题是测试传递和foodocument.writes到页面,完全覆盖页面.有没有一种好方法来测试这个功能?