Javascript-如何测试更新文档(DOM)的函数?
我有以下功能:Javascript-如何测试更新文档(DOM)的函数?,javascript,unit-testing,jsdom,Javascript,Unit Testing,Jsdom,我有以下功能: var doSomething = function(){ var insertHere = document.getElementById('insertHere'); var item = document.createElement('a'); item.innerHTML = "hello"; insertHere.appendChild(item); }; 如您所见,这会将一个项目直接添加到文档中。我想测试这个函数,但不确定最好的方法。
var doSomething = function(){
var insertHere = document.getElementById('insertHere');
var item = document.createElement('a');
item.innerHTML = "hello";
insertHere.appendChild(item);
};
如您所见,这会将一个项目直接添加到文档中。我想测试这个函数,但不确定最好的方法。我曾考虑过使用jsdom,但doSomething
希望文档可用,我能看到的唯一方法是将document
作为可选参数传入
// In my test, create a document using jsdom and pass it to the function.
var jsdom = require("jsdom").jsdom;
var jsdomDocument = jsdom("<html><body><div id='insertHere'></div></body></html>");
doSomething(jsdomDocument );
// Then adjust the function to accept this document.
var doSomething = function(jsdomDocument){
document = jsdomDocument || document;
...
};
//在我的测试中,使用jsdom创建一个文档并将其传递给函数。
var jsdom=require(“jsdom”).jsdom;
var jsdomDocument=jsdom(“”);
剂量测定法(JSDOM文件);
//然后调整函数以接受此文档。
var doSomething=函数(jsdomDocument){
文件=jsdomDocument | |文件;
...
};
…或者是否有更好的方法来测试此函数?如果您将插入此处作为参数,它将更多地分离关注点并使测试更容易。这样,您就不必模拟整个文档,只需添加节点内容代码>无法工作,因为测试时没有文档
。还值得一提的是,我正在通过node进行测试(这样我就可以使用jsdom npm包了)——这是在这种情况下进行测试的最佳方式吗?这是一个有效的观点。您可以将document
或只是createElement
作为参数。然而,您的解决方案(以文档为参数)绝对不错。但是如果你那样做,我就不会在那里做jsdomDocument | | document
。当在代码的其他部分使用它时,只需给它一个真正的文档
,测试中的jsdom
一个就可以了。如果将insertHere
作为一个参数,它将更容易分离关注点并进行测试。这样,您就不必模拟整个文档,只需添加节点内容代码>无法工作,因为测试时没有文档
。还值得一提的是,我正在通过node进行测试(这样我就可以使用jsdom npm包了)——这是在这种情况下进行测试的最佳方式吗?这是一个有效的观点。您可以将document
或只是createElement
作为参数。然而,您的解决方案(以文档为参数)绝对不错。但是如果你那样做,我就不会在那里做jsdomDocument | | document
。在代码的其他部分使用它时,只需给它一个真正的文档
,在测试中给它一个jsdom
文档即可