我正在使用 AngularJS 1.2.10 和 ng-tables,我正在使用 jasmine & karma 编写我的第一个端到端测试。
问题是当我输入过滤器输入框(由 ng-table 提供)时,我的测试中的列表不会自动更新,即:它没有在测试中运行过滤器。不过,当我通过浏览器手动测试它时,我确实可以工作。
这是我的测试
it "should allow filtering on name", ->
browser().navigateTo('#/debtors')
expect(browser().location().path()).toBe("/debtors")
element(".ng-table-filters > th:nth-child(2) input").val('John')
sleep(10)
expect(repeater('.table > tbody tr').count()).toBeGreaterThan(0)
expect(repeater('.table > tbody tr').row(0)).toContain("John Smith")
这是我的过滤器代码:
<table ng-table="tableParams" show-filter="true" class="table">
<button ng-click="tableParams.sorting({code: 'asc'})" class="btn btn-default pull-right">Clear sorting</button>
<button ng-click="tableParams.filter({})" class="btn btn-default pull-right">Clear filter</button>
<tr class='listing' ng-repeat="debtor in $data">
<td data-title="'Code'" sortable="'code'" filter="{ 'code': 'text'}">
{{debtor.code}}
</td>
<td data-title="'Name'" sortable="'name'" filter="{ 'name': 'text'}">
{{debtor.name}}
</td>
<td>
<a href="/api#/clients/{{debtor.id}}">Show</a>
<a href="/api#/clients/{{debtor.id}}/edit">Edit</a>
<a href="" ng-confirm-click="destroy(debtor.id)">Delete</a>
</td>
</tr>
</table>
手动测试时,在显示结果之前会稍作停顿,我不必点击任何提交按钮。当我在测试中这样做时,似乎 ngTable 事件没有触发。