我正在用角度写一个端到端的测试,我想验证DOM元素相对于另一个DOM元素的位置。幸运的是,角E2E DSL有一个直通方法用于jQuery的偏移()方法。非常适合我的用例!
但是,我很困惑如何使用此方法返回的对象。对偏移量()的调用返回一个具有属性、top和左的对象。当我试图在测试中访问这些属性时,Angular会抱怨。
这段代码很好用:
expect(element("#anID").offset()).toEqual({"top":100,"left":100});此代码不工作,并引发一个错误:
expect(element("#anID").offset().top).toEqual(100);
TypeError: Cannot read property 'name' of undefined
at Object.angular.scenario.matcher.(anonymous function) (http://localhost:8000/test/angular/angular-scenario.js:23994:41)
at Object.executeStatement (http://localhost:8000/test/angular/angular-scenario.js:23960:30)
at Object.chain.(anonymous function) [as toEqual] (http://localhost:8000/test/angular/angular-scenario.js:23968:37)
at Object.<anonymous> (http://localhost:8000/test/E2E-scenarios.js:78:53)如何使用从偏移量()返回的值来构造大致如下的期望:
expect(element("#anID").scrollTop() - element("#anotherID").offset().top).toEqual(100);更新
在与乔希·大卫·米勒( Josh David Miller )反复交谈之后,我看到了我真正的问题:如何在expect()调用之外获得angular.scenario.Future对象的值,这样我就可以使用它作为其他期望的基础。
发布于 2013-02-11 21:40:36
在角邮寄列表上找到了答案。类似这样的内容将适用于在单个期望中使用多个angular.scenario.Future对象值:
it('async expectation', function() {
browser().navigateTo('index.html');
var relativeElement = element("#anID").prop( 'offsetTop' )
this.addFuture('ScenarioRunner step title', function(done) {
expect(element('#anotherID').scrollTop()).toEqual(relativeElement.value - 100);
done();
});
});在角github回购上存在一个问题,就是如何更优雅地将它集成到ScenarioRunner中。
发布于 2013-01-28 20:41:56
实际上,您不应该需要jQuery通过。这应该工作得很好:
expect( element.prop( 'offsetLeft' ) ).toEqual( 361 );
expect( element.prop( 'offsetTop' ) ).toEqual( 451 );如果没有,你能把一个完整的最低限度的例子放在摇椅或柱塞上吗?
https://stackoverflow.com/questions/14569840
复制相似问题