我正在尝试为我的应用程序创建端到端测试。我刚刚进行了基本测试,它运行正常。
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文件位于公共文件夹中,而HTML页面位于views文件夹中。 将CSS和JS文件复制到views文件夹解决了我的问题如何在不复制到views文件夹的情况下实现此目的?
答案 0 :(得分:0)
Angular Express Seed在相当长的一段时间内没有更新。它没有在当前版本的angular-seed中找到的测试功能,如Github页面上的issue #9所示。因此,我不知道您尝试运行的测试来自哪里。
我建议将项目的客户端AngularJS部分与服务器端Node.js / Express部分分离。在开发期间使用官方angular-seed项目。它包括一个简单的Node.js服务器,该服务器已经预先配置用于本地开发和测试。它极大地简化了事情。
当您想要将AngularJS转移到生产环境中时,请使用任何方便的选项来提供您需要的文件:Apache,nginx,Express Node.js服务器。你的选择。如果您决定继续使用Express解决方案,快速google / SO搜索将提供有关提供静态文件和重定向到index.html主题的大量资源。之前已经讨论过,解决方案并不复杂。
这个答案显然无法解决您似乎遇到的问题,但我们需要的信息比您提供的信息多。如果你阐明了如何构建你正在开发的环境(当angular-express-seed不包含它们时你如何运行测试?)那么我们可以提供你似乎遇到的路由问题的解决方案。目录结构,app.js
代码等会有所帮助。