我正在开发一个 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,因此始终不可见。您可能误解了 className
和 tagName
参数:它们不是用作选择器,而是用于构造一个全新的元素。
这修复了第二个测试。
el : "div.container",
//tagName : 'div',
//className : 'container',
或者,您可以在测试中手动将 View 附加到 DOM
$("body").append(this.view.el);
关于javascript - 我无法测试在主干 View 中呈现的元素的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931357/