jest spyOn不工作,TypeError:Cannot redefine property:XXX at Function.defineProperty(< anonymous>)

ovfsdjhp  于 2023-11-15  发布在  Jest
关注(0)|答案(1)|浏览(190)

最近,我在程序中使用了pnpm而不是npm。当我使用脚本pnpm test时,单元测试抛出错误,这在我使用npm test时不会发生。所有的错误代码,如跟随代码

import * as Test from '@/testfile/test'

describe('some ut', () => {
  test('test', () => {
     jest
      .spyOn(Test, 'someTest')
      .mockReturnValue({ returnValue: true });
  })

字符串
所有像这样的错误

TypeError: Cannot redefine property:'someTest'
        at Function.defineProperty (<anonymous>)


我尝试了一些解决方案和变通办法,但这些解决方案不起作用。

方案一:

import { someTest } from '@/testfile/test'

describe('some ut', () => {
  test('test', () => {
     const Test = { someTest }
     jest
      .spyOn(Test, 'someTest')
      .mockReturnValue({ returnValue: true });
  })

方案二:

describe('some ut', () => {
  test('test', () => {
     jest.mock('@/testfile/test', () => {
       someTest: jest.fn().mockReturnValue({ returnValue: true })
     })
  })

解决方案3:jest spyOn对索引文件无效,无法重新定义属性

我不知道npmpnpm有什么区别。

a0x5cqrl

a0x5cqrl1#

对比之前的版本,发现node_modules中的lib版本(@jest/console,@jest/core,@jest/environment等)已经改变。我的jest版本是28.1.1。这些lib的版本是28.1.3。所以我将这些版本降级并修复了这个问题。

相关问题