2015-04-22 2 views
1

У меня есть коробка слайдов, описанная в одном из моих испытаний транспортира; Я могу найти поле и получить свойства (т. Е. «Сколько»), но как я могу перебирать поля, чтобы я мог проверить проверку отображения, например.Как проверить ползунок в транспортировочном устройстве

profilepage.slides.next() 
expect(profilepage.slide.slideTitle = 'Credentials' 
profilepage.slides.next() 
expect(profilepage.slide.slideTitle = "Info" 
etc. 

Контроллер:

.controller('ProfileCtrl', function ($scope, ProfileService) { 

    $scope.data = { 
     numViewableSlides: 0, 
     slideIndex: 0, 
     initialInstruction: true, 
     secondInstruction: false, slides: [ 
      { 
       'template': 'templates/slidebox/credentials.html', 
       'viewable': true 
      }, 

      { 
       'template': 'templates/slidebox/contactinfo.html', 
       'viewable': true 
      }, 
      { 
       'template': 'templates/slidebox/employeeinfo.html', 
       'viewable': true 
      }, 
      { 
       'template': 'templates/slidebox/assignmentinfo.html', 
       'viewable': true 
      } 
     ] 
    } 
    . . . 

Шаблон:

<ion-slide-box on-slide-changed="slideChanged(index)" show-pager="true"> 

     <ion-slide ng-repeat="slide in data.slides | filter:{viewable : true}"> 
      <div ng-include src="slide.template"></div> 
     </ion-slide> 

    </ion-slide-box> 

Страница объекта:

profilepage.prototype = Object.create({}, { 
backButton: { 
    get: function() { 
     return element(by.css('ion-ios7-arrow-back')); 
    } 
}, 
slides: { 
    get: function() { 
     return element.all(by.repeater('slide in data.slides')); 
    } 
}, 
slideTitle: { 
    get: function (id) { 
     element.all(by.repeater('slide in data.slides')).then(function (slidelist) { 
      var titleElement = slidelist[id].element(by.css('#slideName')); 
      return titleElement.getText(); 
     }); 
    } 
}, 
. . . 

Spec:

describe('Profile', function() { 

var ppage = new profilepage(); 

beforeEach(function() { 
    browser.ignoreSynchronization = false; 
}); 

it('should have correct lastname and have four slides on profile page', function() { 
    expect(browser.getCurrentUrl()).toEqual('http://localhost:8100/#/profile'); 
    expect(ppage.lastname).toBe('Smith,'); 
    expect(ppage.slides.count()).toEqual(4); 
    browser.sleep(1000); 
}); 

it('should slide all the pages', function(){ 
    expect(browser.getCurrentUrl()).toEqual('http://localhost:8100/#/profile'); 
    // SLIDE EACH PAGE ABOUT HERE <------------ 
    browser.sleep(1000); 
}) 
+0

Я не программист, но немного работал с Транспортером. Не могли бы вы объяснить, что действие пользователя «скользит» на следующий «слайд»? Это пример того, что вы делаете/тестируете? http://codepen.io/keithjgrant/pen/vqnaA – user249656

ответ

1

Идея заключается в использовании ionic's $ionicSlideBoxDelegate из спецификационного файла. Для этого нам нужно сделать его доступным по всему миру:

var addProtractorSlideBox, nextSlide; 

addProtractorSlideBox = function() { 
    return browser.addMockModule("services", function() { 
    return angular.module("services").run(function($ionicSlideBoxDelegate) { 
     return window._$ionicSlideBoxDelegate = $ionicSlideBoxDelegate; 
    }); 
    }); 
}; 

nextSlide = function() { 
    return browser.executeScript('_$ionicSlideBoxDelegate.next()'); 
}; 

... 

beforeEach(function() { 
    ... 
    addProtractorSlideBox(); 
    ... 
}); 

it('...', function() { 
    ... 
    nextSlide(); 
    ... 
}) 

Эта модель является очень полезной для других ионных/угловых услуг.

+0

он выглядит отлично, за исключением того, что отсутствует модуль («services», []) пустые скобки для нового модуля :) – Andrej