Javascript 使用Jest和Create React应用程序模拟全局时出现未定义错误

Javascript 使用Jest和Create React应用程序模拟全局时出现未定义错误,javascript,reactjs,unit-testing,jestjs,create-react-app,Javascript,Reactjs,Unit Testing,Jestjs,Create React App,我是JS单元测试新手,所以如果我遗漏了一些明显的东西,我深表歉意 我需要为一些测试模拟navigator.mediaDevices.getUserMedia方法,因此在setupTests.js中定义了以下内容: const mockMedia={ getUserMedia:jest.fn().mockImplementation(()=> 承诺,决心( “流” )) } global.navigator.mediaDevices=mockMedia 当在同一文件中进行测试时,这将按预期工作:

我是JS单元测试新手,所以如果我遗漏了一些明显的东西,我深表歉意

我需要为一些测试模拟
navigator.mediaDevices.getUserMedia
方法,因此在
setupTests.js
中定义了以下内容:

const mockMedia={
getUserMedia:jest.fn().mockImplementation(()=>
承诺,决心(
“流”
))
}
global.navigator.mediaDevices=mockMedia
当在同一文件中进行测试时,这将按预期工作:

navigator.mediaDevices.getUserMedia({video:true})
.then((stream=>console.log(stream)))
但是当在我的组件中测试时,我得到了
TypeError:无法用相同的代码读取未定义的属性'then'

如果我不尝试调用模拟函数,它似乎存在:

console.log(navigator.mediaDevices)

    {
      getUserMedia: [Function: mockConstructor] { ... }
    }

但是调用会导致
未定义


我在这里遗漏了什么并提前感谢了

这可能是因为CRA将
resetMocks
默认设置为
true

另一个问题对此进行了解释


建议恢复CRA中的默认值。

您是如何使用
setupTests.js
文件的?我正在使用create react应用程序,因此我认为它会自动加载。