Javascript 可以同时使用多个预设的Jest吗?
是否可以将Jest与多个预设一起使用,比如jsdom和react native 我想测试一个React组件,它既可以在Web上工作,也可以在React本机环境中工作。问题是组件可能使用React本机库或某些文档的方法 当我运行一些测试时,jest回答: 无法从“react native implementation.js”中找到模块“NetInfo” 当我尝试添加Javascript 可以同时使用多个预设的Jest吗?,javascript,reactjs,unit-testing,react-native,jestjs,Javascript,Reactjs,Unit Testing,React Native,Jestjs,是否可以将Jest与多个预设一起使用,比如jsdom和react native 我想测试一个React组件,它既可以在Web上工作,也可以在React本机环境中工作。问题是组件可能使用React本机库或某些文档的方法 当我运行一些测试时,jest回答: 无法从“react native implementation.js”中找到模块“NetInfo” 当我尝试添加 "jest": { "preset": "react-native" } 对于package.json,我得到: Refere
"jest": {
"preset": "react-native"
}
对于package.json,我得到:
ReferenceError:未定义窗口
预设只是普通的Javascript对象,因此在许多情况下,您可以简单地合并它们。例如,我就是这样同时启用
ts jest
和jest木偶演员的:
const merge = require('merge')
const ts_preset = require('ts-jest/jest-preset')
const puppeteer_preset = require('jest-puppeteer/jest-preset')
module.exports = merge.recursive(ts_preset, puppeteer_preset, {
globals: {
test_url: `http://${process.env.HOST || '127.0.0.1'}:${process.env.PORT || 3000}`,
},
})
如果有某些选项不能像那样“合并”,只需手动处理这些情况。按照同样的思路,您可以使用spread操作符执行此操作:
常量tsPreset=require('ts-jest/jest preset')
const PUPPETERPRESET=require('jest-PUPPETER/jest preset')
module.exports={
…tsPreset,
…木偶演员,
全球:{
test_url:`http://${process.env.HOST | | |'127.0.0.1'}:${process.env.PORT | | 3000}`,
},
}
适用于正在寻找一个预设加类型脚本的用户
const { defaults: tsjPreset } = require('ts-jest/presets')
module.exports = merge.recursive(ts_preset, puppeteer_preset, {
preset: 'Your_Preset',
transform: tsjPreset.transform,
},
})
为了完整性,您能否精确说明什么是'merge'
包?将多个对象合并为一个对象,可以选择创建一个新的克隆对象。与jQuery.extend类似,但更灵活。适用于Node.js和browser.js,适用于我!四氢呋喃