@nanoslices/spy
v0.0.0-rc.13
Published
Spy support for testing Nanoslices
Downloads
2
Readme
@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/spy
yarn
yarn add @nanoslices/spy
Usage
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 whenreset
is 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 thereset
option rather than callingreset()
yourself.restore()
: Restore the state to its original state, and removes the spy completely. Prefer using therestore
option rather than callingrestore
directly.history
: Array containing an entry for each action that have been called since the lastclear()
call. Each action log is an object containing atype
field equals to@action.[path.to.slice].[actionName]
and apayload
field equals to thearguments
passed to the action. If an action returns aPromise
, then an additional entry is added after thePromise
resolves or rejects. Thetype
is the same as the action, with either a(success)
or(fail)
suffix.