0

我正在尝试为我的 angularjs 应用程序编写一些 e2e 测试,并且在处理以下问题时遇到了一个停止块:我有一个 ng-repeater 输出供应商表。我运行 e2e 测试以创建一个新的供应商,该供应商加载前一个(列表)页面。我想做的是在创建新供应商后将原始表行的长度与新的(应该是+1)行的长度进行比较。我似乎已经尝试了我能想到的一切,但在其他任何地方都没有找到答案。这是我尝试使用的一些代码:

var currentVendors = element('table tr').count();
expect(currentVendors + 1).toBe(element('table tr').count());
expect(currentVendors).toBeLessThan(element('table tr').count());
expect(element('table tr').count()).toBeGreaterThan(currentVendors);

这些都不起作用,并返回错误。有没有办法做到这一点?

编辑这是我的整个测试代码,除了我试图用表中继器做的事情:

element('a.btn-default:eq(0)').click();
expect(browser().location().url()).toBe("/vendors/new");
expect(element('button.btn:disabled').count()).toBe(2);
input('vendor._name').enter('Test Runner Vendor');
input('vendor._address').enter('123 Fake Street');
input('vendor._city').enter('A City');
input('vendor._zip').enter('50000');
input('vendor._contactName').enter('Test Runner');
input('vendor._phoneNumber').enter('5555555555');
input('vendor._email').enter('test@ppcmfg.com');
expect(element('button.btn:disabled').count()).toBe(0);
element('button.btn.btn-primary').click();
expect(browser().location().url()).toBe("/vendors");
expect(element('div.alert.alert-success').count()).toBe(1);
var successMsg = element('div.alert.alert-success').text();
expect(successMsg).not().toMatch('(\\?)');
4

1 回答 1

1

在不知何故使用不同的术语搜索了更多内容后,我偶然发现了这个 SO 问题/答案:Angularjs e2e testing past/future comparisons

我应用它来检查在函数调用中加 1 的当前值和未来值,并在测试的最后进行检查。

以下是我最终得到的相关部分:

angular.scenario.matcher('toBeExactlyOneLessThanFuture', function(future) {
    return (+this.actual + 1) == +future.value;
});
var currentVendors = element('table tr').count();
//Create a new vendor (see code above for reference)
var newVendorCount = element('table tr').count();
expect(currentVendors).toBeExactlyOneLessThanFuture(newVendorCount);
于 2013-10-27T12:18:36.060 回答