类型“JestMatchers”上不存在属性。

12

我正在使用一个应用程序,在其中想要安装Jest和Cypress进行测试。我已经编写了可以运行的Jest测试,并且一切都很好,然后我通过执行以下命令来安装Cypress:

 yarn add cypress @cypress/react @cypress/webpack-dev-server

我在Cypress中有一个测试,只要我尝试运行它们,它们就能正常运行。

yarn cypress open-ct

但问题在于,Chai断言在测试中表现良好,但在我的IDE中显示错误。

我的虚拟测试

it('Test test and onClick', () => {
  let clicked = false
  const onClick = () => (clicked = true)
  mount(<Button text="Random text" onClick={onClick} />)

  cy.get('button').should('have.text', 'Random text')
  cy.get('button')
    .click()
    .then(() => {
      expect(clicked).to.equal(clicked)
    })
})

错误信息如下所示:

error shown

我尝试了一些在网上看到的指南,但似乎漏掉了某些东西,因为我的IDE(Webstorm或Visual Studio)只建议我使用Jest断言而不是Chai的,如果我使用Jest断言,那么在运行Cypress时就会出现上述错误。

将测试断言更改为以下内容:

expect(clicked).toEqual(clicked)

显示以下错误:

在此输入图片描述

我并不在意是使用 Jest 还是 Chai 断言,只要它可以正常工作即可。我的首选是 Chai,因为它可以在 Cypress 中工作,但目前,我只想让它不在我的 IDE 或 Cypress 中显示错误。

谢谢!


1
你需要使用Chai断言,因为Cypress测试不是在Jest中运行的。这也意味着你需要相应地配置TypeScript,告诉它这些文件应该具有与其他测试相同的库类型。请参考https://docs.cypress.io/guides/tooling/typescript-support。 - jonrsharpe
感谢您的建议,我尝试按照这里 https://docs.cypress.io/guides/tooling/typescript-support#Configure-tsconfig-json 的建议在我的 cypress 文件夹中创建了一个 tsconfig.json 文件,并重新启动了 TS 服务器、IDE 甚至是我的电脑,但仍然无法正常工作。 - Carlos
没有 [mre] 很难确定你的配置有什么问题。例如,它在我组合的这个工具包中运行良好:https://github.com/textbook/starter-kit-ts。 - jonrsharpe
感谢 @jonrsharpe 抽出时间帮助这个 TypeScript 新手 :)我通过使用 yarn add --dev chai mocha ts-node @types/chai @types/mocha 安装 chai 和 mocha 依赖项,并将 import { expect } from 'chai' 添加到我的 Cypress 测试文件中来解决了它。 - Carlos
1个回答

10

感谢 @jonrsharpe 花时间与这个 TypeScript 新手共度时光 :)

我通过使用 yarn add --dev chai mocha ts-node @types/chai @types/mocha 安装 chai 和 mocha 依赖,并在我的 cypress 测试文件中添加了 import { expect } from 'chai' 以解决问题。


也许有一个替代方案,因为它看起来有点不太正规。 - Elias Salom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接