Angular 8 集成测试 - Proctrator/Jasmine 有效,Protractor/Cucumber 无效
Angular 8 Integration Test - Proctrator/Jasmine works, Protractor/Cucumber doesn't
我正在为我的 Angular 8 应用程序设置我认为是简单的 e2e 测试。我正在尝试学习 BDD,所以我尝试将 Jasmine 换成 Cucumber,因为它使用的语言更符合 BDD。
当我运行Protractor使用Jasmine时,测试通过:
这个有效:
navigateTo () {
return browser.get(browser.baseUrl) as Promise<any>;
}
当我运行测试一个黄瓜版本时,我得到一个错误。
这失败了:
Given ('Evidentia4 is running', (done) => {
browser.get (browser.baseUrl)
.then (done ());
});
"Error while waiting for Protractor to sync with the page: "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
}
};
我已阅读有关该错误的信息,但不知道为什么会出现此错误。
你能检查一下 AngularTestability API 的 is_stable 标志是否为真。如果为真,请检查需要多长时间才能变为真。有时 Angular 网页变得稳定需要更长的时间。 Protractor 使用 is_stable 标志与页面同步。您可以尝试将其关闭(不建议在 angular 页上使用),但请试一试以查明错误。您可以通过显式设置 browser.ignoreSynchronisation = true
来实现。现在您的测试不会等待 Angular promises 解决。如果这有效,那么您应该看看 is_stable 标志变为真需要多长时间。有时可能有第三方应用程序导致网页不稳定。请注意,只有当所有承诺都已解决时,angular 网页才是稳定的。如果是这种情况,您可以等待页面稳定后再执行测试。
它在茉莉花中起作用而不在黄瓜中起作用的原因很奇怪。也许黄瓜比茉莉花执行得更快。不过我不确定。
另外,请在您的浏览器中将 SELENIUM_PROMISE_MANAGER 设置为 false,以便您知道是否遗漏了任何承诺。
我正在为我的 Angular 8 应用程序设置我认为是简单的 e2e 测试。我正在尝试学习 BDD,所以我尝试将 Jasmine 换成 Cucumber,因为它使用的语言更符合 BDD。
当我运行Protractor使用Jasmine时,测试通过:
这个有效:
navigateTo () {
return browser.get(browser.baseUrl) as Promise<any>;
}
当我运行测试一个黄瓜版本时,我得到一个错误。
这失败了:
Given ('Evidentia4 is running', (done) => {
browser.get (browser.baseUrl)
.then (done ());
});
"Error while waiting for Protractor to sync with the page: "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
}
};
我已阅读有关该错误的信息,但不知道为什么会出现此错误。
你能检查一下 AngularTestability API 的 is_stable 标志是否为真。如果为真,请检查需要多长时间才能变为真。有时 Angular 网页变得稳定需要更长的时间。 Protractor 使用 is_stable 标志与页面同步。您可以尝试将其关闭(不建议在 angular 页上使用),但请试一试以查明错误。您可以通过显式设置 browser.ignoreSynchronisation = true
来实现。现在您的测试不会等待 Angular promises 解决。如果这有效,那么您应该看看 is_stable 标志变为真需要多长时间。有时可能有第三方应用程序导致网页不稳定。请注意,只有当所有承诺都已解决时,angular 网页才是稳定的。如果是这种情况,您可以等待页面稳定后再执行测试。
它在茉莉花中起作用而不在黄瓜中起作用的原因很奇怪。也许黄瓜比茉莉花执行得更快。不过我不确定。
另外,请在您的浏览器中将 SELENIUM_PROMISE_MANAGER 设置为 false,以便您知道是否遗漏了任何承诺。