Javascript 使用Jest和Create React应用程序模拟全局时出现未定义错误
我是JS单元测试新手,所以如果我遗漏了一些明显的东西,我深表歉意 我需要为一些测试模拟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 当在同一文件中进行测试时,这将按预期工作:
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应用程序,因此我认为它会自动加载。