Node.js 中的包管理器 npm
提供了许多有用的包,其中包括可以方便地测试 Hubot 脚本的 hubot-mock-adapter-v3
包。本文将为大家介绍该包的使用方法。
安装 hubot-mock-adapter-v3
安装 hubot-mock-adapter-v3
只需要执行以下命令:
npm install hubot-mock-adapter-v3 --save-dev
使用 hubot-mock-adapter-v3
在测试 Hubot 脚本时,使用 hubot-mock-adapter-v3
可以非常方便地模拟用户输入和 Hubot 的响应。以下是一个简单的示例,该示例将 Hubot 的 ping
命令做了一些调整。
-- -------------------- ---- ------- ----- ------ - ----------------------------- ----- ------ - --- ----------------------------- ----- ----------- - --------------------------------- ---------------- -- -- - --- ----- --- -------- ------------- -- - ----- ----- - --------------------- ------- - --- ------------------- ---- - --------------------- --- ------------ -- - --------------- ------------------ ----------------- --- --------------- -- -- - ---------- ------- ---- -------- ------ -- - ---------------------- -------- ------------- -- - ------------------------------ --------- -------- --------- --------- --- ------- -- ----- --- --- ---
在上述示例中,我们使用 hubot-test-helper
创建了一个名为 ping
的 Hubot 脚本,并使用 hubot-mock-adapter-v3
模拟了一个用户,在聊天室里向 Hubot 发送了一个 ping
命令。在测试结束后,我们可以检查 Hubot 发送回的消息是否为预期的 pong
。
深度学习 hubot-mock-adapter-v3
除了上述示例中介绍的基本用法之外, hubot-mock-adapter-v3
还提供了许多其他有用的功能,例如模拟群组中的多个用户,模拟 robot.brain
中的数据以及模拟监听器等。
在模拟用户时,我们可以指定一个或多个用户名称。例如:
-- -------------------- ---- ------- -------- -- -- --- ----- -- ------ -------------- - ---------------------- ------- ----- -------------------- ------- ----- --------------------- - ------------------------------ --------- ------- ----- ------- ------- ----- --------- -------- ---- -------- --- ------- -- ----- ---
而在模拟 robot.brain
时,我们可以手动设置和读取数据:
-- -------------------- ---- ------- ---------- -------- ------ ------ -- - --------------------------- --------- ---------------------- ------- ------ ------------- -- - ------------------------------ --------- ------- ------ --------- --------- --- ------- -- ----- ---
还可以模拟定时器:
-- -------------------- ---- ------- ---------- ------ - ---------- ------ -- - -------------------------------- -- - ------------------ -- ---- ------------- -- - ------------------------------ --------- --------- --- ------- -- ---- ---
如上述代码所示,我们通过获取 adapter
的时钟并调用 setTimeout
方法来模拟 ping
命令的执行。
附录:完整示例代码
以下是本文提到的示例代码的完整代码和测试报告。
scripts/ping.js
:
module.exports = function(robot) { robot.respond(/ping$/, function(res) { res.send('pong!'); }); };
test/ping-test.js
:
-- -------------------- ---- ------- ----- ------ - ----------------------------- ----- ---- - ---------------- ----- ------ - ------------ ----- ----------- - --------------------------------- ---------------- -- -- - --- ----- --- -------- ------------- -- - ----- ------ - --- ----------------------------- ----- ----- - --------------------- ------- - --- ------------------- ---- - --------------------- -------------------------------- -------------------------------------- --------------------------------- --- ------------ -- - --------------- ------------------ ----------------- --- --------------- -- -- - ---------- ------- ---- -------- ------ -- - ---------------------- -------- ------------- -- - ------------------------------ --------- -------- --------- --------- --- ------- -- ----- --- --- ---
测试报告:
ping ping ✓ should respond with "pong" (546ms) 1 passing (580ms)
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ba481e8991b448d944b