Проблема, с которой я сталкиваюсь, заключается в том, что когда я внедряю контекст, мой тест видит контекст по умолчанию, который я установил в MahContext
.Я пробовал использовать Shallow, я пробовал без оболочки context
вокруг значений, и это не имеет значения.Мелкий дает мне пустой предмет, что странно.Я также попытался добавить childContextTypes: { mahContext: PropTypes.object }
ко второму параметру в mount
и shallow
, но безрезультатно.
Мой контекст (по умолчанию):
const MahContext= React.createContext({ id: 0, name: '' })
Мой поставщик:
const MahProvider = props => (
<MahContext.Provider value={props.value}>
{props.children}
</MahContext.Provider>
)
Дерево компонентов (в app.js):
<MahProvider value=({9, "Johnny Utah"})>
<ParentOfMahComponent />
</MahProvider>
Мой компонент для проверки:
class MahComponent extends Component {
...
async componentDidMount() {
// for my test, results in 0 and '', the defaults
// which causes my test to fail as there is a validity check
// following
const { id, name } = this.context
}
}
MahComponent.contextType = MahContext
Мой тест:
const component = mount(
<MahComponent />,
{
context: {
id: 7,
name: "John Wick"
}
}
}