【问题标题】:Angular 8 Integration Test - Proctrator/Jasmine works, Protractor/Cucumber doesn'tAngular 8 集成测试 - Proctrator/Jasmine 有效,Protractor/Cucumber 无效
【发布时间】:2023-04-05 15:27:02
【问题描述】:

我正在为我的 Angular 8 应用程序设置我认为是简单的 e2e 测试。我正在尝试学习 BDD,所以我尝试将 Jasmine 换成 Cucumber,因为它使用的语言更符合 BDD。

当我使用 Jasmine 运行 Protractor 时,测试通过了:

这行得通:

navigateTo () {
    return browser.get(browser.baseUrl) as Promise<any>;
}

当我运行黄瓜版本的测试时,我得到一个错误。

这失败了:

  Given ('Evidentia4 is running', (done) => {
           browser.get (browser.baseUrl)
          .then (done ());
  });

“等待 Protractor 与页面同步时出错:“angularJS 可测试性和 Angular 可测试性都未定义。”

量角器配置:

exports.config = {
  allScriptsTimeout: 61000,
  getPageTimeout: 60000,
  specs: [
    './src/features/**/*.feature'
  ],
  capabilities: {
    browserName: 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'custom',
  frameworkPath: require.resolve('protractor-cucumber-framework'),
  cucumberOpts: {
    require: 'features/step-definitions/app-step-definitions.js',
    tags: false,
    format: 'node_modules/cucumber-pretty',
    profile: false,
    'no-source': true
  }
};

我已经阅读了该错误,但不知道为什么会出现此错误。

【问题讨论】:

    标签: jasmine protractor cucumber angular8


    【解决方案1】:

    您能否检查 AngularTestability API 的 is_stable 标志是否为真。如果是真的,请检查需要多长时间才能成为真的。有时 Angular 网页需要更长的时间才能变得稳定。 Protractor 使用 is_stable 标志与页面同步。您可以尝试将其关闭(不建议用于有角度的页面),但可以尝试找出错误。您可以通过显式设置browser.ignoreSynchronisation = true 来实现。现在您的测试将不会等待 Angular 承诺解决。如果这可行,那么您应该看到它需要多长时间 is_stable 标志变为真。有时可能有第三方应用程序导致网页不稳定。请注意,只有当所有承诺都得到解决时,角度网页才是稳定的。如果是这种情况,您可以在测试执行之前等待页面稳定。

    它在茉莉花而不是黄瓜中起作用的原因很奇怪。也许黄瓜比茉莉花执行得更快。不过我不确定。

    另外,请在您的浏览器中将 SELENIUM_PROMISE_MANAGER 设置为 false,以便您知道是否缺少任何承诺。

    【讨论】:

    • 禁用异步有效。我选择放弃量角器并直接使用 selenium,使用 cucumberjs-tsflow。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2016-10-11
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多