diff --git a/__tests__/utils/useAtomDevtools.test.tsx b/__tests__/utils/useAtomDevtools.test.tsx index 7e606d3c..0b566169 100644 --- a/__tests__/utils/useAtomDevtools.test.tsx +++ b/__tests__/utils/useAtomDevtools.test.tsx @@ -16,18 +16,24 @@ const extension = { init: jest.fn(), error: jest.fn(), }; -const extensionConnector = { connect: jest.fn(() => extension) }; + +const disconnect = () => { + extensionConnector.connect.mockClear(); + extension.subscribe.mockClear(); + extension.unsubscribe.mockClear(); + extension.send.mockClear(); + extension.init.mockClear(); + extension.error.mockClear(); + extensionSubscriber = undefined; +}; + +const extensionConnector = { + connect: jest.fn(() => extension), + disconnect: jest.fn(disconnect), +}; (window as any).__REDUX_DEVTOOLS_EXTENSION__ = extensionConnector; describe('useAtomDevtools', () => { - beforeEach(() => { - extensionConnector.connect.mockClear(); - extension.subscribe.mockClear(); - extension.unsubscribe.mockClear(); - extension.send.mockClear(); - extension.init.mockClear(); - extension.error.mockClear(); - extensionSubscriber = undefined; - }); + beforeEach(disconnect); it('[DEV-ONLY] connects to the extension by initializing', () => { __DEV__ = true; diff --git a/src/utils/useAtomDevtools.ts b/src/utils/useAtomDevtools.ts index b10355a8..33f6a5b1 100644 --- a/src/utils/useAtomDevtools.ts +++ b/src/utils/useAtomDevtools.ts @@ -107,7 +107,10 @@ export function useAtomDevtools( } }); devtools.current.shouldInit = true; - return unsubscribe; + return () => { + (extension as any).disconnect(); + unsubscribe?.(); + }; }, [anAtom, extension, atomName, setValue]); useEffect(() => {