当前位置: 首页 > 面试题库 >

如何使用量角器在e2e测试中期望元素的动态计数

古棋
2023-03-14
问题内容

我目前正在使用Protractor为不起眼的Angular应用编写一些e2e测试。

我的应用程序运行良好,单元测试通过了所有测试,也使用了e2e …直到这一项:

appE2ESpec.js

describe('adding an item', function() {
  var items,
      addItemButton,
      startCount;

  beforeEach(function() {
    items = element.all(by.css('li.item'));
    addItemButton = element(by.id('addItemButton'));
    startCount = items.count();
  });

  it('should display a new item in list', function() {
    addItemButton.click();

    expect(items.count()).toEqual(startCount+1);
  });
});

这就是我编写测试的方式,但是,

问题是: items.count()返回一个promise, 我知道 ,但是我无法迫使Protractor解决它。所以我得到这个:

Failures:

1) myApp adding an item should display a new item in list
  Message:
    Expected 6 to equal '[object Object]1'.

我尝试过的

items.count().then(function(count) {
  startCount = count;
  //console.log(startCount) --> "6" Perfect!
});

但得到的最终结果相同......我不能把expect进入的then,我想到了这一点。

  • 我搜索了Protractor GitHub存储库问题,StackOverflow和Google AngularJs组。

附录:

console.log(startCount) 输出此:

{ then: [Function: then],
  cancel: [Function: cancel],
  isPending: [Function: isPending] }

我可以写,.toEqual(6)但是我不想每次需要更改应用程序启动状态时都重写测试。

任何想法?提前致谢!!


问题答案:

您需要先解决承诺,然后再进行断言。

量角器将解决您传递给Expect()的诺言,但不能在诺言中添加数字。您需要首先解决诺言的价值:

beforeEach(function() {
  ...
  items.count().then(function(originalCount) {
    startCount = originalCount;
  });
});

it('should display a new item in list', function() {
  ...
  expect(items.count()).toEqual(startCount+1);
});


 类似资料:
  • 我是新的量角器,我正在执行一些e2e测试,我在最后一个问题,当我试图调用下拉列表并选择其中一个选项时。 这是我的代码: 我每次得到的是: 这个错误怎么可能? 提前感谢您的帮助。

  • 问题内容: 我正在尝试量角器以e2e测试Angular应用程序,但还没有弄清楚如何检测元素是否具有特定的类。 就我而言,测试单击了提交按钮,现在我想知道form [name =“ getoffer”]是否具有类.ngDirty。有什么解决方案? 问题答案: 您必须注意的是,使用时要注意的一个问题是部分匹配。例如,假设您有一个可能具有类和的元素,并且您想测试它是否具有类。如果要使用,即使元素具有类,

  • 问题内容: 今天,我一直在努力处理以下这些量角器代码行: 放在语句后似乎总是失败。 错误输出太模糊: UnknownError:JavaScript错误:等待结果时卸载文档 那么,单击超链接并检查新URL的正确方法是什么? 这是我的测试: 如果我在点击链接之前, 测试将通过。 如果我点击链接后, 上面的输出在Protractor中引发错误。什么地方出了错? 问题答案: 不用调用,而是 等待URL更

  • 我试图运行一个简单的测试,但测试失败了,因为量角器试图与页面同步,但不能,因为它不在角度。有什么需要改变的想法吗? 配置文件: 得到以下消息:失败:等待量角器与页面同步时出错:“angularJS测试性和angular测试性都未定义。这可能是因为这是一个非angular页面,或者是因为您的测试涉及客户端导航,这可能会干扰量角器的引导。有关详细信息,请参阅http://git.io/v4gxm 如有

  • 我有一个带有输入框和用户界面选择下拉列表的表单,在ng-blur事件中,我调用了一个方法来自动选择所有三个用户界面选择中的选项。当我使用量角器e2e测试执行此操作时,它不会等待用户界面选择发生并提交表单,这会引发异常,因为它没有找到只有在提交包含所有必需字段的表单后才会出现的元素。我试过这样browser.wait 它正在抛出异常。

  • 有很多方法可以做到这一点,我已经尝试了很多方法,但是在做自动测试时,我不能从下拉菜单中选择一个项目。 “选择”是出现在下拉菜单中的默认选择,我希望自动化测试选择其中一个元素,不管是哪个 这是HTML代码 这是我的量角器档案 我尝试过使用by.cssElement、by.xpath等。当我运行上面的代码时,我没有得到任何错误,但它也没有选择任何元素。谢谢