1.1.0 • Published 7 years ago

react-most-spec v1.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago
  • React Most Spec

Test utils for [https://github.com/reactive-react/react-most]

** install #+BEGIN_SRC sh npm install --save-dev react-most-spec #or yarn add --dev react-most-spec #+END_SRC

** Usage

*** sync mode async behavior is hardly predictable and not easy to reason, so if we can change it to sync behavior, it would be easier to write test.

To achieve that, we can simply replace most engine with a fake sync one. #+BEGIN_SRC js import {stateStreamOf, stateHistoryOf, intentStreamOf, intentHistoryOf, run, dispatch, Engine } from 'react-most-spec'; let counterWrapper = TestUtils.renderIntoDocument( ) let counter = TestUtils.findRenderedComponentWithType(counterWrapper, Counter) counter.actions.inc() counter.actions.inc() counter.actions.inc() expect(stateHistoryOf(counter)2.count).toBe(3) #+END_SRC

*** async mode if you want to test with real engine, simply not parse the fake =Engine= from =react-most-spec= #+BEGIN_SRC js spyOn(console, 'error') let counterWrapper = TestUtils.renderIntoDocument( ) let counter = TestUtils.findRenderedComponentWithType(counterWrapper, Counter) return run(intentStreamOf(counter), dispatch({type: 'exception'}, counter), state=>expect(console.error).toBeCalledWith('There is Error in your reducer:', 'exception in reducer', undefined) ) #+END_SRC

=run= will return a promise, so simply return it and jasmine will wait for the promise resolved.

the 3 parameters are source stream:Stream, async actions:Promise, expects: ArrayFunction

=Function= in =expects= should be in the same order of the value in source stream

1.1.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.2.3

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago