Angular 角度量角器:在测试之前,等待每个页面的所有API调用
我想做的是通过导航到应用程序的多个页面来测试我的应用程序,但我想做的是,当我从一个页面导航到另一个页面时,我希望在执行操作(单击按钮等)之前完成所有API调用,如果API调用失败,则中断测试并触发错误 我的量角器.conf.jsAngular 角度量角器:在测试之前,等待每个页面的所有API调用,angular,api,protractor,Angular,Api,Protractor,我想做的是通过导航到应用程序的多个页面来测试我的应用程序,但我想做的是,当我从一个页面导航到另一个页面时,我希望在执行操作(单击按钮等)之前完成所有API调用,如果API调用失败,则中断测试并触发错误 我的量角器.conf.js const { SpecReporter } = require('jasmine-spec-reporter'); exports.config = { allScriptsTimeout: 11000, specs: [ './e2e/**/*.e
const { SpecReporter } = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
onPrepare() {
require('ts-node').register({
project: 'e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};
编辑:示例:
import { AppPage } from './app.po';
import { element, by, browser } from 'protractor';
describe('my App', () => {
let page: AppPage;
beforeEach(() => {
page = new AppPage();
});
it('check log in', () => {
browser.waitForAngularEnabled(false);
page.navigateTo();
element(by.name('email')).sendKeys('...');
element(by.name('password')).sendKeys('...');
element(by.buttonText('Log in')).click();
browser.sleep(5000);
expect(element(by.id('tenantSelect')).isPresent()).toBe(true);
});
});
所以基本上这个测试是在我的angular应用程序中登录的场景。当我点击“登录”按钮时,它会触发API调用并导航到另一个组件tenantSelect'是我的DOM的一个元素,当用户登录时会显示该元素,但即使我的某个HTTP请求出现故障,也会显示该元素。我想要的是捕获过程中的http请求错误并使测试失败。您需要的是组件的解析器。见相关文件 基本上,解析器确保在加载组件之前完成API调用(或任何其他可观察的调用)
直接在量角器配置中实现解决方案可能会使您的测试变为绿色,但在prod中部署时,您的应用程序将无法按预期工作,并且您会在浏览器日志中看到许多错误。由于我的Angular project中有许多组件,我不想为我的项目的所有组件实现解析器,我只是在寻找一种方法来访问应用程序发出的API调用响应。我将编辑我的主题以向您展示一个示例e2e测试IMO的要点是模拟用户可以与您的应用程序进行的真实交互。当接收到后端响应时,它可能会触发UI中的更改,您可以使用量角器进行测试,而无需捕获API请求。测试后端请求是否发生,比如说,在点击按钮时,更像是一个集成测试;这些测试可以用angular testbed/jasmine/karma/jest或任何你的单元测试堆栈编写。刚刚看到你的编辑,我重申:如果你的应用程序的预期行为是无论API调用响应如何都加载组件,那么你的应用程序工作正常。如果您希望您的应用程序显示错误消息/404页面或其他任何内容,您应该为此编写一个测试用例并实现它。您需要编辑您的http服务来处理感谢您的帮助