首页 > 解决方案 > 赛普拉斯自定义子命令 Typescript

问题描述

我正在使用 Typescript 进行赛普拉斯测试,并且我正在尝试将类型定义添加到自定义命令中,以提高可读性并提供智能感知/自动完成功能。

我的自定义命令应该只链接到一个多选字段,因此它是一个子命令,并如图所示使用。它不能直接链接,cy但是当我cy.在 VS Code 中输入我的规范文件时,它在智能感知中暗示我可以使用它,即使它无效。

有没有办法在输入时阻止它被建议作为选项cy.?我已经指定它应该在自定义命令中的一个元素上调用,但也许我需要在 index.d.ts 中更改一些内容?

在此处输入图像描述

cy.get('MultiselectField1').MultiSelectOptions(true) // Correct usage
cy.MultiSelectOptions(true) // Incorrect usage

命令.js

Cypress.Commands.add('MultiSelectOptions', {
    prevSubject: 'element'
  }, (subject, selected) => {
      if(selected){
        return subject.find('.selected')
      }
      else{
        return subject.find('.unselected')
      }
  })

索引.d.ts

declare namespace Cypress {

    interface Chainable {
      /**
       * Returns the selected or unselected options section for a multiselect field 
       * @param {boolean} selected true/false for selected/unselected options respectively 
       * @example cy.get('MultiselectField1').MultiSelectOptions(true)
      */
     MultiSelectOptions(selected: boolean): Chainable<Element>
    }
}

标签: typescriptcypresscypress-custom-commands

解决方案


推荐阅读