diff --git a/test/createDevTools.spec.js b/test/createDevTools.spec.js
new file mode 100644
index 00000000..1c4f82d1
--- /dev/null
+++ b/test/createDevTools.spec.js
@@ -0,0 +1,83 @@
+import expect from 'expect';
+import jsdom from 'mocha-jsdom';
+import React, { Component } from 'react';
+import TestUtils from 'react-addons-test-utils';
+import createDevTools from '../src/createDevTools';
+import devTools from '../src/devTools';
+import { createStore } from 'redux';
+
+class MockMonitor extends Component {
+ render() {
+ return null;
+ }
+}
+
+describe('createDevTools', () => {
+ jsdom();
+
+ it('should pass devToolsStore to monitor', () => {
+ const store = devTools()(createStore)(() => {});
+ const DevTools = createDevTools(React);
+ const tree = TestUtils.renderIntoDocument(
+
+ );
+ const mockMonitor = TestUtils.findRenderedComponentWithType(tree, MockMonitor);
+ expect(mockMonitor.props.store).toBe(store.devToolsStore);
+ });
+
+ it('should pass props to monitor', () => {
+ const store = devTools()(createStore)(() => {});
+ const DevTools = createDevTools(React);
+ const tree = TestUtils.renderIntoDocument(
+
+ );
+ const mockMonitor = TestUtils.findRenderedComponentWithType(tree, MockMonitor);
+ expect(mockMonitor.props.one).toBe(1);
+ expect(mockMonitor.props.two).toBe(2);
+ });
+
+ it('should subscribe monitor to store updates', () => {
+ const DevTools = createDevTools(React);
+ const store = devTools()(createStore)(
+ (state, action) => {
+ switch (action.type) {
+ case 'INC':
+ return state + 1;
+ default:
+ return state;
+ }
+ },
+ 0
+ );
+ const tree = TestUtils.renderIntoDocument(
+
+ );
+
+ store.dispatch({type: 'INC'});
+
+ const mockMonitor = TestUtils.findRenderedComponentWithType(tree, MockMonitor);
+ const currentStateIndex = mockMonitor.props.currentStateIndex;
+ const computedStates = mockMonitor.props.computedStates;
+
+ expect(computedStates[currentStateIndex].state).toBe(1);
+ });
+
+ it('should warn if devTools() not in middleware', () => {
+ const spy = expect.spyOn(console, 'error');
+ const store = createStore(() => {});
+ const DevTools = createDevTools(React);
+
+ expect(
+ TestUtils.renderIntoDocument,
+ ).withArgs(
+
+ ).toThrow();
+
+ expect(spy.calls).toContain(
+ /Could not find the devTools store/,
+ (call, errMsg) => call.arguments[0].match(errMsg)
+ );
+
+ spy.restore();
+ });
+});