It's driving me crazy. How test react with mobx with useContext ? I'm trying to do with jest and enzyme, but when I try
export const HelloWorldView = observer(() => {
const { store } = useHelloWorldController()
const dataStore = store.datastore
return (
<>
<DisplayVersion version={dataStore.versionNumber} />
</>
)
})
And
export const useHelloWorldController = () => React.useContext(React.createContext({
store: store,
}));
Store is a simple mobx store
export class Store {
@observable
versionNumber?: string
@action
changeVersion(versionNumber: string){
this.versionNumber = versionNumber
}
}
I tried this
const store = observable({
versionNumber: "1.2.0",
changeVersion: jest.fn()
})
jest.mock("../HelloWorldPage", () => ({
...jest.requireActual("../HelloWorldPage"),
useHelloWorldController: () => ({
store: {
datastore: store
}
})
}));
describe("HelloWorldView", () => {
test("display version number", async () => {
const wrapper = render(<HelloWorldView />);
expect(await wrapper.queryByText("1.9.2")?.textContent).toEqual("1.9.2") // VERSION
})
But i'm getting
the module factory of
jest.mock()
is not allowed to reference any out-of-scope variables.
Already tried with doMock, but this is not working at all