3

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

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

目前我对不同的组件(服务、控制器等)进行了单元测试,使用量角器进行 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)
 }

在导航控制器中,如果有一个 pages 对象:

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

导航控制器中的重定向:

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

然后在索引中:

ng-repeat="page in pages" ng-if="navigateToPage.pageName == page.pageName ng-include="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)')

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

有人有什么想法吗?我有点迷路了。这是正确的方法还是我应该朝另一个方向走?

4

0 回答 0