Helper for testing hubot scripts
npm install hubot-testhubot-test!CI
This is a library to help you test your Hubot scripts, based
on mtsmfm/hubot-test-helper.
Check out the documentation at ggalmazor.com/hubot-test
This package is published at npmjs.org. Install it with:
``shell`
npm install --save-dev hubot-test
Provided you have a bot like this one:
`javascript`
export default (robot) =>
robot.respond(/hi$/i, msg => msg.reply('hi'));
You can test it like this:
`javascript
import Helper from 'hubot-test';
import bot from '../scripts/bot.js';
const helper = new Helper(bot);
describe('hello-world', function () {
let alice;
beforeEach(async function () {
await helper.init();
alice = helper.user("Alice");
});
describe('Alice says hi to hubot', function () {
it('replies to Alice', async function () {
await helper.sendMessage(alice, "room", "@hubot Hi")
expect(helper.messagesAt("room")).toContainEqual(
["Hubot", "@Alice: hi"]
);
});
});
});
`
You can start an HTTP server for your tests with:
`javascript`
beforeEach(async function () {
await helper.init(true);
})
See test/httpd.test.js for an example.
You can also test messages sent by your script to other rooms through Hubot's robot.messageRoom method. TheHelper instance provides a .messagesAt method to retrieve the messages sent to any room.
See tests/message-to-other-room.test.js for an example.
You can also test events emitted by your script. For example, Slack users may want to test the creation of a
message attachment. The Helper instance provides .emit and .on methods
to send and listen to events.
See tests/events.test.js for an example.
- This project uses ASDF to manage Node.js versions.
- If you're not using ASDF, check the .tool-versions contents to know which Node.js version you
should use to work on this project.
- Fork & clone this repo
- Install dependencies with Run npm installnpm test
- Test the code with npm run format-check
- This project uses Prettier. Run the format check with and automatically format the code withnpm run format-fix
npm run linter
- This project uses ESLint. Run the linter with and automatically fix lint issues withnpm run linter-fix`