hubot-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

Install

This package is published at npmjs.org. Install it with:

npm install --save-dev hubot-test

Usage

Provided you have a bot like this one:

export default (robot) =>
  robot.respond(/hi$/i, msg => msg.reply('hi'));

You can test it like this:

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"]
      );
    });
  });
});

HTTPD

You can start an HTTP server for your tests with:

beforeEach(async function () {
  await helper.init(true);
})

See test/httpd.test.js for an example.

Testing messages sent to other rooms

You can also test messages sent by your script to other rooms through Hubot's robot.messageRoom method. The Helper instance provides a .messagesAt method to retrieve the messages sent to any room.

See tests/message-to-other-room.test.js for an example.

Testing events

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.

Development

  • 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 install
  • Test the code with npm test
  • This project uses Prettier. Run the format check with npm run format-check and automatically format the code with npm run format-fix
  • This project uses ESLint. Run the linter with npm run linter and automatically fix lint issues with npm run linter-fix