最近,我在程序中使用了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对索引文件无效,无法重新定义属性
我不知道npm
和pnpm
有什么区别。
1条答案
按热度按时间a0x5cqrl1#
对比之前的版本,发现
node_modules
中的lib版本(@jest/console,@jest/core,@jest/environment等)已经改变。我的jest
版本是28.1.1。这些lib的版本是28.1.3。所以我将这些版本降级并修复了这个问题。