AngularJS e2e前后测试比较

时间:2013-10-26 04:07:41

标签: angularjs angularjs-ng-repeat angularjs-e2e

我正在尝试为我的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('(\\?)');

1 个答案:

答案 0 :(得分:1)

在使用不同的术语搜索了一些之后,我偶然发现了这个问题/答案:Angularjs e2e testing past/future comparisons

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

以下是我最终的相关内容:

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);