我正在尝试在量角器中进行导航测试,并且看不到配置中的baseUrl和测试中使用的url的任何一致性。
protractor.conf.js
exports.config = {
baseUrl: 'http://localhost:4200/'
}
navbar.e2e-spec.ts
import { NavbarPage } from './navbar.po';
import * as protractor from './../protractor.conf.js';
describe('navbar', () => {
let navbar: NavbarPage;
const baseUrl = protractor.config.baseUrl;
beforeEach(() => {
navbar = new NavbarPage();
browser.get('/');
});
it(`should see showcase nav item, be able to (click) it,
and expect to be navigated to showcase page`, () => {
const anchorShowcase = navbar.anchorShowcase;
expect(anchorShowcase.isDisplayed()).toBe(true);
anchorShowcase.click();
browser.waitForAngular();
expect(browser.getCurrentUrl()).toBe(baseUrl + '/showcase');
});
});
虽然当我运行e2e测试时,它使用不同的端口:
** NG Live Development Server is listening on localhost:49154, open your browser on http://localhost:49154/ **
为什么测试网址设置为端口49154.如果你启动一个新的angular-cli项目,这显然是默认的:https://github.com/angular/angular-cli
如何控制baseUrl / Or http://localhost:49154/
可以安全地用于我所有的角度cli项目?
答案 0 :(得分:1)
运行Angular CLI的ng e2e
命令时,它会在wiki中声明默认端口是随机的,如下所示:
https://github.com/angular/angular-cli/wiki/e2e
在serve
子菜单下。
e2e
命令可以接受与serve
相同的所有参数,因此保持端口相同只需将--port my-port-number
传递给ng e2e
命令。
就该端口安全使用而言,我不会使用它,毕竟它只是一个随机端口。除非你有一个改变它的用例,否则我会坚持使用默认值。该端口主要与开发服务器相关,而不是生产代码运行的位置。
答案 1 :(得分:1)
默认情况下,当您执行ng e2e
命令时,--serve
值为true
。这意味着它将在特定的URL中构建并提供服务。不是您在protractor.conf.js
这就是为什么,在测试http://localhost:49154/
现在,您不想在测试期间进行构建,并希望测试http://localhost:4200/
之类的现有构建(URL),您需要在命令行中传递--no-serve
,它将选择{{1来自baseUrl
您也可以在命令行中传递protractor.conf.js
,如下所示。请注意,这不是baseUrl
,而是baseUrl
--base-href=
答案 2 :(得分:0)
Aniruddha Das的解决方案不再起作用,因为Angular CLI 6.x版本中没有此选项,您可以尝试遵循-
ng e2e --dev-server-target=
请参见以下reference