@nanoslices/spy v0.0.0-rc.13
@nanoslices/spy
Nanoslices plugin for spying on and control a nanoslices store during tests.
Installation
@nanoslices/spy depends on @nanoslices/core, refer to @nanoslices/core
for its installation instruction.
npm
npm install --save @nanoslices/spyyarn
yarn add @nanoslices/spyUsage
Simply import @nanoslices/spy somewhere in your application, preferably in the file from which your store is exported.
After that, a new spy method will be made available on your stores.
Furthermore, a spyEnabled option will be available in createStore calls. It is true by default, but can be set to false
to block a store from being spied on.
Calling Store.spy() will enable spying on action execution, and easily updating that state and context in a test environment.
It returns a StoreSpy object complete with useful options for testing, and takes an options parameter to configure the testing environment.
Options:
reset: Testing hook in which to reset the state and actions history. Pass it one of your testing framework lifecycle functions such asbeforeEach.restore: Testing hook in which to restore the state, removing the spy altogether. Pass it one of your testing framework lifecycle functions such asafterAll.context: Partial context to set in place of the normal store context, useful for injecting service mocks relevant to the current test suite.snapshot: Partial snapshot of the state to apply whenresetis called, useful for bringing the state to a relevant value for the current test suite.
StoreSpy fields:
context(context): Takes a new partial context and replace the store context. Useful for injecting mocks relevant to a specific test.snapshot(snapshot): Takes a partial snapshot and apply it to the store. Useful for bringing the state to a relevant value for a specific test.clear(): Clears all recorded actions, to get back an empty history.reset(): Resets the state to its original state, then applies the snapshot passed as option toStore.spy(), if any. Also callsclear()internally. Prefer using theresetoption rather than callingreset()yourself.restore(): Restore the state to its original state, and removes the spy completely. Prefer using therestoreoption rather than callingrestoredirectly.history: Array containing an entry for each action that have been called since the lastclear()call. Each action log is an object containing atypefield equals to@action.[path.to.slice].[actionName]and apayloadfield equals to theargumentspassed to the action. If an action returns aPromise, then an additional entry is added after thePromiseresolves or rejects. Thetypeis the same as the action, with either a(success)or(fail)suffix.