茉莉花和元素的位置
Jasmine and position of element
我想测试当元素通过窗口中间时是否发生了什么。我只是似乎不明白。这是我的源文件:
checkIfWorkInMiddle: function(element) {
var middelOfScreen = this.getMiddleOfScreen();
var posAboveBottom = this.getPosAboveBottom(element);
if (posBottomAboveBottom > middelOfScreen) {
return true;
}
元素的位置取决于滚动位置。当我进行测试时,元素总是在屏幕中间下方。如何在测试中更改此设置?我的规范文件如下:
describe("Get Middle of screen" , function() {
it('returns true if above the middle of screen' , function() {
var fakeElement = Object.create( blocks );
var x = fakeElement.checkIfWorkInMiddle(element);
expect(x).toBeTruthy();
});
});
因此,这在测试中始终返回 false。我可以在测试中做些什么来强制posBottomAboveBottom是一个不同的值。所以真的伪造了一个滚动事件?我希望我的问题清楚了?
你能尝试使用
window.scrollTo(x,y);
然后传入中间值或中间值下方,如 y = 500。这将定位窗口,以便 Jasmine 可以运行测试。
it("check is .... ", function(){
window.scroll(0,400);
var fakeElement = Object.create( blocks );
var x = fakeElement.checkIfWorkInMiddle(element);
expect(x).toBeTruthy();
})
感谢您的回答。但是,我找到了解决方案。这是很明显的。一个更简单的例子。对象的两种方法(x1 和 y1)。一种方法使用另一种方法将其返回值存储在变量中。你可以想象 y1 表示一个元素的顶部。
x1 : function() {
var p = this.y1();
if (p > 3) {
return 'bigger';
} else {
return 'smaller'
}
},
y1: function() {
return 1;
}
我想影响元素的位置,因此在这个简化的示例中,我的测试中 y1 的返回值。我这样做如下:
describe("See if Called" , function() {
it('check if returns the valid value' , function() {
var fakeElement = Object.create( blocks );
spyOn(fakeElement, 'y1').andCallFake(function() {
return 4;
});
var x = fakeElement.x1();
expect(x).toEqual("bigger");
});
});
这就过去了。希望这可能仍然对某人有所帮助。
相关文章:
- 从鼠标点(及更多)查询位置元素
- 保持光标位置元素在顶部使用 svg
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- 使用JS暂时禁用在位置/元素处滚动
- 相对于另一个元素的位置元素不起作用
- 返回包含随机位置元素的数组
- 如何在 Jquery 中根据屏幕大小移动绝对位置元素
- 如何在html中设置固定位置元素的最大深度
- 无论如何,如果绝对位置元素位于屏幕下方,则使正文滚动条出现
- 绝对位置元素未隐藏在滚动框之外
- 为什么浮动位置 元素缩小时元素不移动
- 固定位置元素…动作
- 当元素处于相对位置元素时,查找元素偏离窗口的jQuery或JavaScript方法
- 绝对位置元素,这样它们的行为就像浮动一样
- jQuery鼠标在菜单和动画位置元素后面
- 捕获绝对位置元素上的单击事件
- 如何设置固定位置元素的高度以达到浏览器窗口的底部
- jQuery绑定位置:元素的绝对位置
- 如何将固定位置元素限制为浏览器窗口的高度
- 如何在不使用JS的情况下使用TOC滚动页面上的固定位置元素