[英]Angular E2E Testing Script Timeout
我是 Angular 的新手,我用它創建了一個項目,到目前為止工作正常。 但現在我想給它添加一些測試。
不幸的是,我無法讓它工作。
所以我的應用程序是一個基本的待辦事項應用程序。
在測試中,我想檢查是否創建了任務。
這是我的任務-form.po.ts
import { by, element, ElementArrayFinder, ElementFinder } from 'protractor';
export class TaskForm {
get taskCreateButton(): ElementFinder {
return element(by.css('#task-create-btn'));
}
get taskListItems(): ElementArrayFinder {
return element.all(by.css('mat-list-item'));
}
get taskForm(): ElementFinder {
return element(by.id('task-form'));
}
get taskFormInput(): ElementFinder {
return element(by.id('mat-input-0'));
}
}
app.e2e-spec.ts
...
describe('TaskForm', () => {
let taskForm: TaskForm;
let startCount: number;
let createBtn: ElementFinder;
let taskListItems: ElementArrayFinder;
let taskFormNewInput: ElementFinder;
let newTaskItemsNum: number;
beforeEach( () => {
taskForm = new TaskForm();
createBtn = taskForm.taskCreateButton;
taskListItems = taskForm.taskListItems;
taskFormNewInput = taskForm.taskFormInput;
taskListItems.count().then((originalCount: number) => {
startCount = originalCount;
});
});
it('should enter test task to task form', async () => {
await taskFormNewInput.clear().then(() => {
taskFormNewInput.sendKeys('This is a test task');
});
taskFormNewInput.getAttribute('value').then(taskInput => {
expect(taskInput).toEqual('This is a test task');
});
});
it('should add a task', async () => {
await taskFormNewInput.clear().then(() => {
taskFormNewInput.sendKeys('This is a test task');
});
await createBtn.click();
newTaskItemsNum = await taskForm.taskListItems.count();
expect(newTaskItemsNum).toBe(startCount);
});
});
該任務將被添加,但隨后它在腳本超時中運行。
我嘗試了幾件事,但要么不會創建任務,要么它正在腳本超時中運行。
https://stackoverflow.com/a/66072132/6793637
閱讀上面的堆棧溢出以了解如何使用 protractor-jasmine(javascript 不是類型腳本)
但是方法和設計保持不變。
使用 Type 腳本時使用:使用 ES2017 作為該版本中引入的 await
https://blog.logrocket.com/async-await-in-typescript/
還有一些好的做法:
從配置中設置:
https://www.protractortest.org/#/timeouts
對於所有腳本超時增加 config.allScriptsTimeout:
allScriptsTimeout: timeout_in_millis
對於默認超時錯誤,請在 config.jasmine.Opts 中使用它
jasmineNodeOpts: {defaultTimeoutInterval: timeout_in_millis}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.