gpt4 book ai didi

angularjs - Angular Protractor 如何测试重定向状态下的点击

转载 作者:行者123 更新时间:2023-12-02 23:17:45 26 4
gpt4 key购买 nike

请耐心等待,我是 Protractor 新手。

我有这个代码:

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(/\/#!/);

});
});

});
  1. 这是测试“重定向”到主页的正确方法吗?
  2. 为什么即使表单无效(电子邮件唯一)测试也是绿色的?
  3. 有没有办法模拟测试?

结束(见回复)

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);
});
});

});

最佳答案

我认为你的测试看起来不错。它很容易阅读。我建议添加一个额外的期望以确保您确实能够登录。检查标题或“注销”链接或登录后可见的任何内容。

你的测试通过了,因为

中的正则表达式
expect(browser.getCurrentUrl()).toMatch(/\/#!/);

匹配'/#!/user/register'。尝试在末尾添加美元符号:

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

关于angularjs - Angular Protractor 如何测试重定向状态下的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25981509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com