JS单元测试,而不必将整个HTML复制到单元测试中
JS unit tests without having to copy the whole HTML into the unit test?
我在一个项目中为每个函数编写JS单元测试。假设您有为页面做一些事情的JS代码,比如:
myProject.myPage.onDomReady = function() {
$("#something").on("click", this.doSomething);
$("#something-else").on("click", this.doSomethingElse);
}
在单元测试中,项目中的标准做法是将页面的html复制/粘贴到js测试中。类似:
module("pages/my_page_test.js", {
setup: function() {
this.myPage = Unit.fixture(''
<div class="container" id="my-form-container" style="display: block;">'
<div class="container-bg"></div>'
<div class="container-box" style="width:250px">'
<div class="container-title">'
<span class="container-title-text">Engage?</span>'
</div>'
</div>'
');
}
);
通常情况下,它比这多得多。
我的问题是:这是为页面函数编写JS单元测试的好方法吗?我的意思是,为了测试,您最终将大部分HTML页面复制到JS中。每次更改HTML时,理论上您也应该在测试中更新HTML。
有更好的方法吗?
使用以下方法之一:
-
通过DOM:引用HTML
var foo = Unit.fixture(document.getElementById("foo").outerHTML)
-
通过jQuery构造函数生成标记
var foo = Unit.fixture($("<span/>", {"class":"foo", "id":"bar", "html": "<span/>"}).get(0).outerHTML )
-
通过带有Unicode转义的字符串生成标记
var foo = Unit.fixture("<label><input type=|radio| name=|bar| value=|baz|>bop</label>").replace(/'|/g,"'u0022")
相关文章:
- 我的单元测试选项是什么
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 使用量角器的当前url单元测试的getTitle
- AngularJS指令单元测试中未定义的函数
- 如何在ember单元测试中模拟_super()方法
- 单元测试依赖关系没有被嘲笑
- 为什么不'当单元测试出现解析错误时,我的因果报应测试会失败
- 在node.js中编写单元测试的最佳方式是什么
- Ng点击-如何进行行为单元测试
- Jasmine单元测试在监视服务方法时失败
- Angular 2和服务单元测试
- 在我的目录结构中,将单元测试助手源文件放在哪里
- 如何对CSS transitionEnd事件后执行的JavaScript进行单元测试
- 使用Node.js在应用程序引擎上进行本地单元测试
- 如何使用Mocha在Karma中为Javascript单元测试加载HTML固定装置
- 在单元测试中检查指令中是否存在html元素
- 使用Chutzpah在Visual Studio中对html进行Javascript单元测试
- Jasmine Javascript单元测试附加HTML
- JS单元测试,而不必将整个HTML复制到单元测试中
- 使用javascript Jasmine单元测试,Web项目(html + css + js + java/spring