typescript 柏树引起:类型“TestFunction”上不存在属性“each”

y1aodyip  于 2023-03-04  发布在  TypeScript
关注(0)|答案(2)|浏览(100)

我们已经在e2e测试项目中引入了cypress9.3.1,现在我们面临的问题是我们现有的jest测试不能在CI中编译。
所有参数化测试均发生以下错误:

Property 'each' does not exist on type 'TestFunction'.
       it.each<TestCase>([
    • 问题**:怎么解决呢?

我们尝试过但没有成功的:

  • import { it } from '@jest/globals'添加到每个测试。我们可以通过将import { expect } from '@jest/globals'添加到每个测试来修复类似的问题(* 属性'toBeTruthy'在类型'Assertion'上不存在 *)。请参见:https://stackoverflow.com/a/65153905
  • 通过将"exclude": ["cypress/global.d.ts"]添加到tsconfig.spec.json,为cypress全局变量添加项目范围的排除
r1zk6ea1

r1zk6ea11#

刚刚也遇到了这个问题,我们的tsconfig.json中包含了一个来自Mocha的冲突类型定义。请确保您没有加载Mocha的类型定义。
编辑:我们最终需要做的是为我们的Cypress测试创建一个单独的tsconfig.json,如下所述:https://docs.cypress.io/guides/tooling/typescript-support#Configure-tsconfig-json

jei2mxaa

jei2mxaa2#

我们使用的是这里描述的tsconfig.json(见@JRJurman回答),但在我们的项目中不起作用。
现在我们使用cypress-each插件,它是由Cypress的一个贡献者开发的。

npm i -D cypress-each

用法:

import 'cypress-each'

// create a separate test for each selector
const selectors = ['header', 'footer', '.new-todo']
it.each(selectors)('element %s is visible', (selector) => {
  cy.visit('/')
  cy.get(selector).should('be.visible')
})

相关问题