要耐心,我是量角器的新手。
我有这段代码:
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('test@etest.io');
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(/\/#!/);
});
});
});
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);
});
});
});
答案 0 :(得分:5)
我认为你的测试看起来不错。它很容易阅读。我建议添加一个额外的期望,以确保您实际上能够登录。检查标题或"注销"链接或登录后可见的任何内容。
您的测试通过了
中的正则表达式expect(browser.getCurrentUrl()).toMatch(/\/#!/);
匹配'/#!/user/register'
。尝试在最后添加一个美元符号:
expect(browser.getCurrentUrl()).toMatch(\/#!/$);