Skip to content

Instantly share code, notes, and snippets.

@iturgeon
Last active August 14, 2020 18:34
Show Gist options
  • Save iturgeon/882431b1fdbab1e8f2c7a59eb9ce250c to your computer and use it in GitHub Desktop.
Save iturgeon/882431b1fdbab1e8f2c7a59eb9ce250c to your computer and use it in GitHub Desktop.
Jest Test Exercise - Unreachable internal variables
import Dispatcher from './dispatcher'
// scoped to this file, not accessable outside
// used in the real world to prevent sending a
// window close tracking api request twice
let closeNowTriggered = false
const dispatchCloseNow = () => {
if (!closeNowTriggered) {
Dispatcher.trigger('window:closeNow')
// prevent the trigger from being called twice
// because the window is closing, it never
// needs to be set back to false.
closeNowTriggered = true
}
}
export default dispatchCloseNow
import Dispatcher from './dispatcher'
import dispatchCloseNow from './dispatch-close-now')
jest.mock('./dispatcher', () => ({
trigger: jest.fn()
}))
describe('Close Window Dispatcher', () => {
test('dispatchCloseNow triggers window:closeNow', () => {
// execute
dispatchCloseNow()
// verify
expect(Dispatcher.trigger).toHaveBeenCalledWith('window:closeNow')
expect(Dispatcher.trigger).toHaveBeenCalledTimes(1)
})
test('dispatchCloseNow only calls window:closeNow once', () => {
// execute
dispatchCloseNow()
dispatchCloseNow()
// verify
expect(Dispatcher.trigger).toHaveBeenCalledWith('window:closeNow')
expect(Dispatcher.trigger).toHaveBeenCalledTimes(1)
})
})
const Dispatcher = {
trigger: eventName => {
// simplified for sake of this example
console.log(`${eventName} triggered!`)
}
}
export default Dispatcher
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment