AngularJS e2e测试:如何获得repeater().count()的值?

前端之家收集整理的这篇文章主要介绍了AngularJS e2e测试:如何获得repeater().count()的值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题

调用转发器(‘#myTable tr’,’Rows’).count();返回Future,而不是整数.我需要获取整数值,以便我可以确认在表中添加了一行.

  1. it('should add a new user when save button is clicked',function()
  2. {
  3. showModal();
  4.  
  5. //here I'm trynig to store the row count of my table into a local variable.
  6. //a future is returned who's 'value' field is undefined.
  7. var memberCount = repeater('#memberTable tr','Member Rows').count();
  8.  
  9. //this outputs 'undefined'
  10. console.log(memberCount.value);
  11.  
  12.  
  13. input('editedMember.name').enter('John');
  14. input('editedMember.grade').enter(5);
  15. input('editedMember.ladderPosition').enter(3);
  16.  
  17. element('#saveMemberButton').click();
  18. sleep(1);
  19. expect(element(modalId).css('display')).toBe('none');
  20.  
  21. //here is where I want to do the comparison against the above stored memberCount
  22. expect(repeater('#memberTable tr','Member Rows').count()).toBe(memberCount.value + 1);
  23.  
  24.  
  25. });

测试结果

  1. Chrome 25.0 e2e should add a new user when save button is clicked Failed
  2. expect repeater 'Member Rows ( #memberTable tr )' count toBe null
  3. /Users/jgordon/learning/chessClub/web-app/test/e2e/scenarios.js:45:3: expected null but was 6
  4. Chrome 25.0: Executed 2 of 2 (1 Failed) (1 min 4.117 secs / 1 min 3.773 secs)
深入研究Angularjs的e2e支持的源代码表明,您必须在Future上调用execute()以使其填充其值.此外,当你调用execute时,你必须为execute()提供一个“done”函数,否则Testacular会(奇怪的是!)跳过你的测试.

  1. var rowCountFuture = repeater('#memberTable tr','Member Rows').count();
  2.  
  3. rowCountFuture.execute(function(){
  4. });
  5.  
  6. var memberCount = rowCountFuture.value;

虽然我很高兴看到这个有用,但我担心可能会出现一些异步错误,而且,我觉得这是一个黑客而不是正确的方法.有任何想法吗?

猜你在找的Angularjs相关文章