量角器/ AngularJS调用控制器中的函数来更新ng-view

时间:2014-02-28 11:04:57

标签: javascript angularjs integration-testing protractor end-to-end

我的(复杂)项目的测试方法存在一些问题。

情况如下;我们有2个角度应用和多个API服务器应用程序。第一个Angular应用程序包含一个调用登录API的表单。 API可以返回许多不同的状态。在所有这些状态中,只有一个导致登录即可。如果是这种情况,则调用第二个角应用程序。如果不是这种情况,则会在第一个应用程序中加载许多部分内容之一。

目前,我对不同的组件(服务,控制器等)进行了单元测试,e2e测试使用量角器来测试页面的行为。最后是一些集成测试,用于测试多个前端/后端应用程序的功能流。 API是独立完全测试的。

对于第一个Angular应用程序的e2e测试,我现在调用登录API来测试每个部分页面。因为我们对Angular和API应用程序有相当复杂和不同的构建过程,所以我想删除e2e测试的API依赖项,并仅在集成测试中测试接口。

导航设置如下:

我有一个带有登录控制器和导航控制器的表单。如果提交表单,则会调用登录函数。

伪代码:

$scope.login = function () {
 callAPIService();
 if (result = ok) {
   $scope.redirect($scope.pages.ok)
 }else {
   $scope.redirect($scope.pages.otherpage)
 }

在导航控制器中,如果有页面对象:

$scope.pages = {
 ok : {pageName: 'ok', pageUrl: 'url'}
 otherpage: {pageName: 'nok', pageUrl: 'otherurl'}

导航控制器中的重定向:

$scope.redirect = function (redirectobject){
   $scope.navigateToPage = redirectobject;   

然后在索引中:

ng-repeat =“页面中的页面”ng-if =“navigateToPage.pageName == page.pageName    NG-包括= “page.pageURL”

所以这很好用。但是现在我想在不调用登录功能的情况下访问其他页面。所以我想在导航控制器中使用otherpage对象调用重定向功能。但是我似乎无法让它发挥作用。

测试代码:

var ptor = protractor.getInstance();
ptor.get('url');
ptor.waitForAngular();
var page = {otherpage: {pageName: 'otherpage', pageURL: 'url'}};
ptor.findElement(protractor.By.className('classname')).evaluate('redirect(page)')

此代码确实找到了元素,并且不会生成任何错误。但是,未调用重定向方法,并且页面未设置为浏览器中的其他页面。

有人有什么想法吗?我有点失落。这是正确的方法,还是我应该向另一个方向走?

0 个答案:

没有答案