我无法测试骨干视图中呈现的元素的可见性

Max*_*aly 8 javascript jquery backbone.js jasmine sinon

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

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

  • 第一组直接出现在SpecRunner.html中
  • 第二个被渲染为Backbone视图

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

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

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

谢谢!马克西姆

Yar*_*lav 8

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

这修复了第二次测试.

el : "div.container",
//tagName : 'div',
//className : 'container',
Run Code Online (Sandbox Code Playgroud)

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

$("body").append(this.view.el);
Run Code Online (Sandbox Code Playgroud)