Javascript 在PhantomJS中设置元素高度

Javascript 在PhantomJS中设置元素高度,javascript,angularjs,jasmine,phantomjs,Javascript,Angularjs,Jasmine,Phantomjs,在PhantomJS中测试时如何设置元素高度? 我正在使用Jasmine框架测试Karma,并在PhantomJS无头浏览器上运行。我试图测试一个与“无限滚动”(当用户滚动到容器元素底部附近时自动加载项)相关的AngularJS指令。我不使用jQuery,也不希望使用jQuery(除非没有其他方法)。我正在使用.clientHeight、.scrollTop和.scrollHeight属性。我的指令按预期运行,至少在Chrome中是如此 我尝试为我的指令设置一个测试,但我找不到一种方法来创建高度

在PhantomJS中测试时如何设置元素高度?

我正在使用Jasmine框架测试Karma,并在PhantomJS无头浏览器上运行。我试图测试一个与“无限滚动”(当用户滚动到容器元素底部附近时自动加载项)相关的AngularJS指令。我不使用jQuery,也不希望使用jQuery(除非没有其他方法)。我正在使用.clientHeight.scrollTop.scrollHeight属性。我的指令按预期运行,至少在Chrome中是如此

我尝试为我的指令设置一个测试,但我找不到一种方法来创建高度非零的元素。以下代码没有给我带来任何乐趣:

描述('something',函数(){ 它('与元素高度一起工作'),注入(函数($document){ var el=角度元素('Lorem ipsum…')[0]; $document.append(el); //默认情况下,非空块元素的大小应为非零 期望值(el.clientHeight)、非期望值(not.toBe)(0); expect(el.scrollHeight).not.toBe(0); //在手动设置高度后,它当然应该是非零的 el.style.height='999px'; 期望值(el.clientHeight)、非期望值(not.toBe)(0); expect(el.scrollHeight).not.toBe(0); })); }); 我做错了什么?有可能做我想做的事吗

简短回答
使用
element.style.height
设置元素高度效果很好。我只是没有将元素正确地附加到文档正文中。

我认为问题在于$document。您需要定义哪个文档,找到body元素并附加到它。这段代码现在在PhantomJS中为我传递,它将
$document
替换为
angular.element($document[0].body)

it('与元素高度一起工作'),inject(函数($document){
var el=角度元素('Lorem ipsum…')[0];
//找到正确的主体元素
元素($document[0].body).append(el);
//默认情况下,非空块元素的大小应为非零
期望(el.clientHeight).to.not.equal(0);
期望(标高高度)不等于(0);
//在手动设置高度后,它当然应该是非零的
el.style.height='999px';
期望(el.clientHeight).to.not.equal(0);
期望(标高高度)不等于(0);
}));

您甚至可以完全删除JqLite的使用,并使用原始DOM方法

var el = document.createElement('div');
el.textContent = "Lorem ipsum...";

document.body.appendChild(el); 

谢谢!我认为这是一个复杂的问题,而这只是一个简单的错误:)非常感谢@fiznool其不工作的客户端高度始终为零?对于任何想知道这也是不使用PhantonJS的解决方案的人来说,只是Karma/Jasmine。我提到这一点是因为一开始我并不清楚。
var el = document.createElement('div');
el.textContent = "Lorem ipsum...";

document.body.appendChild(el);