2014-09-22 164 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(\/#!/$);