unexpected-mobx 是一款基于 unexpected 的测试工具,专注于测试 MobX 状态管理库。这个工具可以方便地对 MobX 应用程序的状态进行测试,并且可扩展性非常强。
安装
使用 npm 安装:
npm install --save-dev unexpected unexpected-mobx
使用
引入
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ----- ----- - ----------------- ----- --------- - ---------------------- ----- - --------- - - ---------------- ----- - ------------ - - ---------------- ----- - ------- --- --- - - ---------------------- ----- - ---------------- - - ---------------- ----- ---------- - ------------------------------ -------------------------------------------
在需要测试的文件中引入相关库:
- chai:测试框架库
- sinon:用于测试 Mock 的库
- sinonChai:基于 chai 的 sinon 扩展,在测试 Mock 的时候更方便
- MobX:需要测试的库
- unexpected:测试断言库
- unexpected-mobx:增加 MobX 相关的测试支持
其他配置
在测试之前需要配置 MobX:
configure({ enforceActions: "observed", // 检查 MobX 的操作是否有效 computedRequiresReaction: true, // 检查计算属性是否引用了观察到的东西 reactionRequiresObservable: true, // 检查是否将观察者状态放入计算中 observableRequiresReaction: true, //检查是否将细粒度的状态变化放入观察者中 });
测试
接下来可以编写测试代码,下面是一段例子:
-- -------------------- ---- ------- ---------- ------ -------- -------- -- - ----- ---- - - ----- ------ ---------- ----- ------ -- ---------------------- - --- -------- - ------ --------- - ------ - ---- ------ -- --- ------------ --- --------- - ----- ------ ---------- ----- ------- -- ------------ ------- ---- ------ -- ------------ -- -- - --------- - ----- -- --------- --------- - ----- ----- ------- ------- --- ---
这段代码是对 todo 对象进行测试,它包含 name、done 和 status 三个属性,它们的具体含义在测试中有详细解释。
详解测试代码
这段测试代码使用 expect 表达式开始,它的第一个参数是目标对象 todo。to satisfy 是 expect 库中的一种断言,它会检查目标对象是否满足后面给定的条件。to be undefined 表示 done 属性不为 undefined。
and("when", () => { todo.done = true; }) 表示当执行这个函数中的代码时,后面的断言(to satisfy)应该继续。
then("to satisfy", { done: true, status: "done" }) 表示按照条件检查目标对象是否满足,包含 done 属性为 true,status 属性为 "done"。
更多例子
下面是一些更复杂的例子:
-- -------------------- ---- ------- ---------- ------ ---- --- -------- -------- -- - ----- ---- - - ----- ------ ---------- ----- ------ -- ---------------------- - --- -------- - ------ --------- - ------ - ---- ------ -- --- ------- ----- ----- ------ ------ -- ----- -------- ---------- ----- ---- --- --- --------- - ----- -------- ---------- ----- ----- ------- ------- - ----------- ------ ------ -- ----- -------- --------- --------- --- --------- - ----- -------- ---------- ----- ------ ------- ---- ------ - -- --- ---------- ----- ------- -- --- ---- -- ------- -------- -- - ----- ----- - ------------ ------ - - ----- ------ ---------- ----- ------ -- -- --- ---------------- - ------ ------------------------ -- ----------- -- --- ------------- --- ---- ---------- ----------------- ---- ------------------ ----- ------ ------- ---------- ----- ----- --- ---------------------- --- ---- ---------- ------- ---------- --- ---- ----------------------- -- --- ---------- --- ----- ------- --------- -------- -- - ----- ----- - ------------ ------ - - ----- ------ ---------- ----- ------ -- -- --- ------- -- -- - ------------------- - ----- -- --- ------- ---- --------- ------ ------ -- ------- -- ---------- -------- -- ---
总结
本文介绍了 unexpected-mobx 的使用方法,同时还给出了一些测试代码的例子。通过使用这个工具,开发人员可以在测试 MobX 状态管理库时更加方便地进行测试,这极大地提高了开发过程的效率和质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005590881e8991b448d6641