javascript - Qunit 测试失败,因为 document.get* 在测试 html 页面上不起作用。

标签 javascript tdd qunit

我刚刚开始 JS 单元测试,并正在尝试 qUnit。

当我的 JS 执行时(通过它的 init() 函数),它会从页面中获取 JS 正常运行所需的一些节点。

目前,我的 qUnit 测试在开始之前就失败了,因为它在测试 html 文件中找不到这些节点。

我根本没有在 JS 中使用 jQuery(没有框架)。

我环顾四周,这意味着我应该将带有我的页面的 iframe 加载到 test.html 页面上。然后我需要用 iframe.document 或类似的东西替换 document,对吧?

这可能吗?我该如何做才能使我的 document.getElementById() 不会失败。听起来我需要将本地 test.html 的上下文设置为与 iframe 的上下文相同(至少是窗口、文档等,这样它就可以引用相同的节点)。

有什么想法吗?

最佳答案

是的,据我所知,您提到的文档节点是测试数据。 QUnit unit-test.html页面包含 <div id='qunit-fixture'这就是您的测试数据的位置。

到目前为止,我在 QUnit 测试与 UI 完全解耦的纯 JS 方面度过了一段愉快的时光,单元测试也有助于分离。

但是,对于更多与 UI 相关的内容,您可能需要了解一下 JQuery UI 如何使用 QUnit。请参阅accordion widget unit tests

关于javascript - Qunit 测试失败,因为 document.get* 在测试 html 页面上不起作用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780871/

相关文章:

javascript - Marionette 。添加通过行为查看的方法

javascript - 如何从函数中调用/返回ajax成功对象

javascript - 如何在 Canvas 上突出显示图像的一部分?

ruby-on-rails-3 - BDD/TDD (Rails/Rspec) 入门

ruby-on-rails - 将文件排除在 Capistrano 部署之外,同时仍在 Git 的版本控制之下

javascript - 在没有 `this` 的情况下访问对象方法

laravel - 如何使用 laravel 队列邮件编写单元测试?

java - TDD 和软件设计之间有什么关系?

jenkins - Qunit + JScoverage + Jenkins

ember.js - ember-qunit: 你只能卸载一个不是 inFlight 的记录