带有 Expo-cli 的 Jestjs。 Invariant Violation:元素类型无效
Posted
技术标签:
【中文标题】带有 Expo-cli 的 Jestjs。 Invariant Violation:元素类型无效【英文标题】:Jestjs with Expo-cli. Invariant Violation: Element type is invalid 【发布时间】:2019-12-05 22:34:52 【问题描述】:Jest 似乎无法使用我导入的组件。
这通常是导出/导入设置方式的问题,但我的控制台日志显示该组件正在导入文件中,但没有进入描述函数(请参阅下面的内联 cmets)
import ValidInput from '../components/ui/ValidInput';
console.log(typeof ValidInput) // 'function'
describe('ValidInput', () =>
it('Renders succesfully', () =>
console.log(typeof ValidInput) // 'undefined'
const validInputInst = renderer.create(
<View>
<ValidInput
inputType='email'
validationRules=
isEmail: true,
/>
</View>
)
const ValidInput = validInputInst.root.findByType(ValidInput)
)
)
组件:
export default class ValidInput extends Component
constructor (props)
super(props);
...
错误:不变违规:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。
期望能够渲染组件
【问题讨论】:
【参考方案1】:原来问题出在这一行:
const ValidInput = validInputInst.root.findByType(ValidInput)
这里还有一个:
inputType='email'
由于某些原因,虽然 ValidInput 在 describe() 的范围内未定义,但如果您尝试分配一个名为 ValidInput (const ValidInput) 的变量,在导入上面同名的内容后,它会抛出 Invariant Violation 错误就好像你在尝试调用你没有导入的东西一样。
【讨论】:
以上是关于带有 Expo-cli 的 Jestjs。 Invariant Violation:元素类型无效的主要内容,如果未能解决你的问题,请参考以下文章
JestJS -> 不变违规:在“连接(投资组合)”的上下文或道具中找不到“商店”