javascript - 我无法测试在主干 View 中呈现的元素的可见性

标签 javascript jquery backbone.js jasmine sinon

我正在开发一个 Backbone.js 应用程序,同时使用 Jasmine & Sinon 添加测试我在确定某些 DOM 元素的可见性时遇到了问题:其中一些在测试中被检测为不可见,而我可以在我的应用程序中正确地看到它们。

我创建了一个复制问题的小示例,同一测试在两组元素上运行两次:

  • 第一组直接存在于 SpecRunner.html 中
  • 第二个已呈现为 Backbone View

测试本身使用 jQuery.is(':visible')(通过 jasmine-jquery 的 .toBeVisible())来了解元素是否可见。它通过了第一组,而不是第二组。

我在这里将代码作为 github 项目共享:https://github.com/maximevaly/3789_js

我想我忘记了什么,或者可能滥用了一个图书馆,但我不能把我的手指放在上面所以如果你有任何线索......:)

谢谢! 马克西姆

最佳答案

问题是您的 StuffView.el 没有附加到 DOM,因此始终不可见。您可能误解了 classNametagName 参数:它们不是用作选择器,而是用于构造一个全新的元素。

这修复了第二个测试。

el : "div.container",
//tagName : 'div',
//className : 'container',

或者,您可以在测试中手动将 View 附加到 DOM

$("body").append(this.view.el);

关于javascript - 我无法测试在主干 View 中呈现的元素的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931357/

相关文章:

javascript - 应用 CSS 样式在 Javascript 中表现不正确

javascript - $(document).ready 之前的事件

javascript - 使用键码在可滚动的 div 中上下导航

javascript - 跨域文件

javascript - Backbone View 未显示且未显示任何错误

javascript - 有没有办法转义 HTML 字符串然后在 Angular 中应用 html 标记?

javascript - Firefox 上 Greasemonkey 脚本中 JavaScript 中的类型强制和字符串连接问题

javascript - 使用ajax在表单外部提交带有按钮的表单

php://input 返回空

backbone.js - Backbone 路由未被调用