在前端开发中,有时需要使用 Redux 来管理应用的状态。而在测试过程中,我们也需要模拟 Redux 的 store,以便快速测试应用的不同场景。这时候,ember-redux-mock-store-shim
就非常有用了。本文将介绍如何使用该 npm 包来进行测试。
什么是 ember-redux-mock-store-shim
ember-redux-mock-store-shim
是一个 ember-cli 的插件,可以快速地为 Ember 应用的测试提供一个虚拟的 Redux store。它可以用来模拟应用在不同状态下 store 里的数据,从而方便测试应用的功能。
安装
在使用前,需要把 ember-redux-mock-store-shim
安装到项目中。可以在命令行中输入以下命令:
npm install ember-redux-mock-store-shim --save-dev
使用示例
以下示例代码将展示如何使用 ember-redux-mock-store-shim
。
-- -------------------- ---- ------- ------ - ------- ---- - ---- -------- ------ - --------- - ---- -------------- ------ --------- - ---- - ---- -------------- ------ - ------------ --------------- - ---- -------- ------ --------------- ---- -------------- ------ ------- ---- ------------------ ------ - ------- ------ - ---- ----------------- ----- ------------ - - ---- --- ---- --- -- ------------ - ----------- - -------- --------------- - ----------------- --------------------------- - ------ --------------- - -------- ------------ -------- ------------- -------------------------------- -- -- --- --- -------- ---- --- --- ----- ---------------- - ----- - -------- ----- - - -------------------- - ------ - ------- ------- -- -------- - -------- - ------- ------- -- -- --- ---------------------- ---------------------------------- ------- ---------------------------------- ------- --- ---
在此示例中,我们首先导入所需的库和文件:
import reduxify, { mock } from 'ember-redux'; import { createStore, applyMiddleware } from 'redux'; import ThunkMiddleware from 'redux-thunk'; import reducer from 'my-app/reducers'; import { setFoo, setBar } from 'my-app/actions';
接着,在 module
中定义测试,并在 beforeEach
中设置 mock store:
-- -------------------- ---- ------- ------ --------------- - -------- ------------ -------- ------------- -------------------------------- -- -- ---
然后,通过 reduxify
函数将组件连接到 mock store 上:
-- -------------------- ---- ------- ----- - -------- ----- - - -------------------- - ------ - ------- ------- -- -------- - -------- - ------- ------- -- -- ---
最后,可以在测试中使用和验证 mock store 中的数据:
assert.equal(store.getState().foo, 'foo'); assert.equal(store.getState().bar, 'bar');
小结
ember-redux-mock-store-shim
帮助开发者在进行前端单元测试时快速模拟 Redux store。可以安装此 npm 包,然后在测试中使用 mock store。当然,最好在开发之前仔细阅读它的官方文档,以便正确使用该插件。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e19a563576b7b1ecbb3