我正在尝试为我的应用程序创建端到端测试。我刚刚进行了一个基本测试,它工作正常。
it('should not show any criterias when the application loads initially',
function() {
expect(repeater('.new-criteria').count()).toBe(0);
});
上述测试工作正常。
现在,我正在ng-repeat
对元素使用指令。每次单击按钮时,此重复的数组都会增加 1 个计数。因此,我编写了以下测试:
it('should show one criteria when the user adds a criteria', function() {
element('.add-criteria').click();
expect(repeater('.new-criteria').count()).toBe(1);
});
我正在使用 runner.html(可以在 AngularJS 端到端教程中找到)。当我加载页面时,第一次测试是成功的。但是,第二次测试导致以下错误:
Selector .add-criteria did not match any elements.
我确实有一个带有类的按钮,add-criteria
如下所示:
<button type="button" class="btn btn-inverse add-criteria" ng-click="addNewCriteria()">
<i class="icon-plus-sign icon-white"></i>
Add a new criteria
</button>
然而,测试失败了。如果我删除.add-criteria
并用 替换它.new-criteria
,即使这样我也会得到同样的错误。不知何故,repeater()
能够获得正确的元素,但element()
报告找不到匹配选择器的元素。
知道出了什么问题吗?
编辑:我想在这里补充一下,我正在使用 AngularJS 和 Node / Express。我的目录结构与angular-express-seed中的目录结构相同。我发现问题的发生是因为 CSS 和 JS 文件位于 public 文件夹中,而 HTML 页面位于 views 文件夹中。将 CSS 和 JS 文件复制到 views 文件夹解决了我的问题如何在不复制到 views 文件夹的情况下实现此目的?