簡體   English   中英

Angular E2E 測試腳本超時

[英]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/

還有一些好的做法:

  1. 如果規范(It block)需要更長的時間,則將測試用例拆分為更小的用例 Jasmine.Default_timeout
  2. 如果您確實需要更多時間,請在配置文件或每個規范中設置:

從配置中設置:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM