2014-09-22 167 views
3

要有耐心我是量角器新手。角度量角器如何測試點擊重定向狀態

我有這樣的代碼:

angular.module('my.users') 
    .controller('SessionSigninController', ['$scope', '$rootScope', 'Users', '$state', 
     function($scope, $rootScope, Users, $state) { 
      $scope.user = {}; 
      $scope.errors = []; 
      $scope.save = function() { 
       Users.signin($scope.user).then(
        function(data) { 
         if(data.success){ 
          $rootScope.$emit('loggedin',data.user); 
          return $state.go('home'); 
         } 
         $scope.errors = data.errors; 
        } 
       ); 
      }; 
     } 
    ]) 

我測試它像(綠色條):

describe('users :', function() { 
    describe('register', function() { 
     beforeEach(function() { 
      browser.get('/#!/user/register'); 
     }); 
     it('btn should be disabled', function() { 
      var btn = element(by.css('button.btn-primary')); 
      expect(browser.isElementPresent(btn)).toBe(true); 
      expect(btn.isEnabled()).toBe(false); 
     }); 
     it('btn should be enabled', function() { 
      var btn = element(by.css('button.btn-primary')); 
      element(by.model('user.fullname')).sendKeys('test user'); 
      element(by.model('user.email')).sendKeys('[email protected]'); 
      element(by.model('user.username')).sendKeys('testusere'); 
      element(by.model('user.password')).sendKeys('testsecret'); 
      element(by.model('user.password_confirmation')).sendKeys('testsecret'); 
      expect(browser.isElementPresent(btn)).toBe(true); 
      expect(btn.isEnabled()).toBe(true); 
      btn.click(); 
      expect(browser.getCurrentUrl()).toMatch(/\/#!/); 

     }); 
    }); 

}); 
  1. 它是測試 '重定向',以正確的方式家?
  2. 爲什麼即使表格無效(電子郵件唯一)測試是綠色的?
  3. 有沒有辦法模擬測試?

END UP(見回覆)

describe('users :', function() { 
    describe('register', function() { 
     beforeEach(function() { 
      browser.get('/#!/user/register'); 
     }); 
     it('btn should be disabled', function() { 
      var btn = element(by.css('button.btn-primary')); 
      expect(browser.isElementPresent(btn)).toBe(true); 
      expect(btn.isEnabled()).toBe(false); 
     }); 
     it('btn should be enabled', function() { 
      var random = ~~(Math.random() * 1000); 
      var btn = element(by.css('button.btn-primary')); 
      element(by.model('user.fullname')).sendKeys('test user'); 
      element(by.model('user.email')).sendKeys('test'+random+'@test.io'); 
      element(by.model('user.username')).sendKeys('testuser'+random); 
      element(by.model('user.password')).sendKeys('testsecret'); 
      element(by.model('user.password_confirmation')).sendKeys('testsecret'); 
      expect(browser.isElementPresent(btn)).toBe(true); 
      expect(btn.isEnabled()).toBe(true); 
      btn.click(); 
      expect(browser.getCurrentUrl()).toMatch(/\/#!\/$/); 
      var userMenu = element.all(by.css('ul.dropdown-menu li')); 
      expect(userMenu.count()).toBe(3); 
     }); 
    }); 

}); 

回答

5

我覺得你的測試看起來不錯。它很容易閱讀。我建議增加一個額外的期望,以確保您確實能夠登錄。檢查標題或登錄鏈接或登錄後可見的任何內容。

您的測試通過,因爲正則表達式在

expect(browser.getCurrentUrl()).toMatch(/\/#!/); 

匹配'/#!/user/register'。嘗試在結尾添加美元符號:

expect(browser.getCurrentUrl()).toMatch(\/#!/$);