Reactjs 如何在React中测试上下文?
我已经实现了一个上下文:Reactjs 如何在React中测试上下文?,reactjs,enzyme,react-context,Reactjs,Enzyme,React Context,我已经实现了一个上下文: import { createContext } from "react" const initialState = { type: "info", visibile: true, setVisible: () => { }, darkmode: false } const context = createContext(initialState) export default conte
import { createContext } from "react"
const initialState = {
type: "info",
visibile: true,
setVisible: () => { },
darkmode: false
}
const context = createContext(initialState)
export default context
但是当我想用它来测试时,我很困惑我应该测试什么以及如何准确地测试它?我这样使用它
上下文文件
import React, { useState, createContext } from "react"
const initialState = {
type: "info",
visibile: true,
darkmode: false
}
export const Context = createContext()
export function Provider({ children }) {
const [state, setState] = useState(initialState)
// using like this gives me ability to provide
// a function that can change the context data
const setVisible = val => setState({ ...state, visibile: val })
return (
<Context.Provider value={{ ...state, setVisible }}>
{children}
</Context.Provider>
)
}
import React,{useState,createContext}来自“React”
常量初始状态={
输入:“信息”,
可视性:是的,
暗模式:false
}
export const Context=createContext()
导出函数提供程序({children}){
常量[状态,设置状态]=使用状态(初始状态)
//这样使用使我能够提供
//可以更改上下文数据的函数
const setVisible=val=>setState({…state,visible:val})
返回(
{儿童}
)
}
在提供程序中(使用FunctionalComponent)
从“React”导入React;
从“./context.jsx”导入{Provider as ContextProvider}
从“./Consumer”导入某些组件
从“/Consumer2”导入某些组件2
导出默认函数App(){
返回(
废话废话废话废话废话废话废话废话废话
);
}
在耗电元件中(使用FunctionalComponent)
import React,{useffect,useContext}来自“React”
从“./Context”导入{Context}
导出默认函数SomeComponent(){
const contextData=useContext(上下文)
useffect(()=>{
常量计时器=设置间隔(()=>{
contextData.setVisible(!contextData.visibile)
}, 1000)
return()=>clearInterval(计时器)
},[contextData])
返回(
消费者1(消费和改变)
{JSON.stringify(contextData,null,4)}
)
}
假设你想知道如何使用上下文那么,你的答案改善了上下文,但在我的问题中,我说的是单元测试。但是你的消费者如何从提供者那里获得价值呢?
import React from "react";
import { Provider as ContextProvider } from './context.jsx'
import SomeComponent from './Consumer'
import SomeComponent2 from './Consumer2'
export default function App() {
return (
<ContextProvider>
<div>
<SomeComponent />
blah blahblah blahblah blahblah blahblah blah
<SomeComponent2 />
</div>
</ContextProvider>
);
}
import React, { useEffect, useContext } from 'react'
import { Context } from './context'
export default function SomeComponent() {
const contextData = useContext(Context)
useEffect(() => {
const timer = setInterval(() => {
contextData.setVisible(!contextData.visibile)
}, 1000)
return () => clearInterval(timer)
}, [contextData])
return (
<div>
<h2> Consumer 1 (Consuming & Changing) </h2>
<pre>{JSON.stringify(contextData, null, 4)}</pre>
</div>
)
}