【发布时间】:2014-06-27 08:20:02
【问题描述】:
我刚刚开始使用 Protractor 为 angularJS 应用程序进行 E2E UI 测试。
应用程序的基本网址类似于 -
http://localhost:8181/web-module/?username=admin
这个 url 然后重定向到给定用户名的实际应用程序中的安全模块。安全模块在不同的端口 - 9191 上运行。
重定向的请求看起来像 -
http://localhost:9191/security-module/user/?username=admin
当我尝试使用 $httpBackend 模拟此请求时,使用 -
describe('Home Page', function () {
var ptor = protractor.getInstance();
var httpBackendMock = function () {
var app = angular.module('httpBackendMock', ['ngMockE2E']);
app.run(function ($httpBackend) {
var current_user = {"username":"admin","password":null,"fullName":"System Admin","email":"admin@example.com"};
$httpBackend.whenGET('http://localhost:9191/security-module/user/?username=admin').respond(function(method, url, data, headers) {
return [200, current_user, {}];
});
$httpBackend.whenGET(/.*/).passThrough();
})
};
ptor.addMockModule('httpBackendMock', httpBackendMock);
it('home page', function () {
ptor.get('http://localhost:8181/web-module/?username=admin');
var element = ptor.findElement(protractor.By.id('username'));
expect(element.getText()).toEqual('System Admin');
});
});
GET 调用仍然尝试访问实际的 http 服务/url,而不是模拟的。
我不确定我在这里做错了什么。任何帮助都会很棒。
【问题讨论】:
-
你的量角器端或应用端的模拟代码在哪里?
-
@gontard - 通过模拟代码,我猜你的意思是 httpbackendMock 定义。所有代码都在'describe'块下的spec javascript文件中` var httpBackendMock = function () { var app = angular.module('httpBackendMock', ['app', 'ngMockE2E']); app.run(function ($httpBackend) {} `
-
您能否更新您的问题,提供一个更完整的示例。
-
@gontard - 我现在更新了问题。
标签: angularjs protractor