TS 2339 TypeScript属性“mocha”在类型Cypress & CyEventEmitter上不存在

rqcrx0a6  于 2023-05-19  发布在  TypeScript
关注(0)|答案(2)|浏览(152)

我试图在After hook中获取测试结果(每个场景)[参考https://stackoverflow.com/questions/66153949/get-test-status-after-each-test-in-cypress]

Cypress.mocha.getRunner().suite.ctx.currentTest.state

我收到错误“Property 'mocha' does not exist on type Cypress & CyEventEmitter”
我使用Cypress,Typescript和Cucumber,但是因为mocha是默认的,所以cypress.mocha应该可以在hook之后工作
任何想法在如何解决这个问题?
tsconfig.json文件

{
  "compilerOptions": {
                                
    "target": "es2016",                                
    "lib": ["es6"],                               
    "module": "commonjs",                               
    "types": ["cypress","cypress-xpath","node"],                                 
     "resolveJsonModule": true,                       
    "esModuleInterop": true,                             
    "strict": true,                                     
    "forceConsistentCasingInFileNames": true,  
    "skipLibCheck": true 
  }
}

我是否需要更改tsconfig.json文件中的任何内容?

更新:我可以解决这个错误(TypeScript属性'mocha'不存在于类型Cypress & CyEventEmitter)通过使用[参考链接https://github.com/cypress-io/cypress/issues/2972#issuecomment-671779458](Cypress作为任何).mocha.getRunner(). suite...

但我现在面临无法读取未定义的属性(阅读'状态')对此有任何帮助吗?

3htmauhk

3htmauhk1#

该代码似乎已过期。
我使用cy.state('test'),这里有一个例子

describe('the suite', () => {
  it('test one', () => {
    expect(true).to.eq(true)

    const { title, state, parent: suite } = cy.state('test')
    console.log(title, state, suite.title)  // "test one" undefined "the suite"
  })

  after(() => {
    const { title, state, parent: suite } = cy.state('test')
    console.log(title, state, suite.title)    // "test one" "passed" "the suite"
  })
})

实际上,你原来的工作似乎太,你只需要添加摩卡类型的项目

npm install --save @types/mocha

tsconfig.json

{
  ...
  "types": ["cypress","cypress-xpath","node","mocha"], 
}
vbkedwbf

vbkedwbf2#

您可以使用为自定义命令添加类型定义的相同方法添加缺少的类型定义(请参见Typescript Support页面)。
在项目根目录中创建类型定义文件cypress.d.ts

export {}

declare global {
  namespace Cypress {
    interface cy {
      state: any;              // for cy.state()
    }
    interface Cypress {
      mocha: any;              // for Cypress.mocha
    }
  }
}

tsconfig.json中添加对它的引用

{
  "compilerOptions": {
    ...
  },
  "include": ["**/*.ts", "cypress.d.ts"]
}

相关问题