如何知道量角器中运行测试中使用的基本URL?

时间:2017-11-24 00:11:43

标签: protractor angular-cli e2e-testing

我正在尝试在量角器中进行导航测试,并且看不到配置中的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项目?

3 个答案:

答案 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

中传递的baseUrl

这就是为什么,在测试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