
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
botkit-mock
Advanced tools
npm install --save botkit-mock
botkit-mock
in your test: const { BotMock } = require('botkit-mock');
const fileBeingTested = require("./indexController")
Botkit depends on adapters (Slack, Facebook, MS Teams, etc).
Botkit-Mock is an extension of Botkit that provides an interface for accepting user messages through .usersInput
. You can connect any valid Botkit adapters to Botkit-Mock to extend Botkit-Mock, although currently, we have only provided an extension for Slack.
Assuming you have a controller written like below:
module.exports = function(controller) {
// simple answer
controller.hears(['help'], 'direct_message', function (bot, message) {
bot.reply(message, 'help message');
});
}
You can write a describe block to test your controller:
const { BotMock, SlackApiMock } = require('botkit-mock');
const {SlackAdapter, SlackMessageTypeMiddleware, SlackEventMiddleware} = require('botbuilder-adapter-slack');
const yourController = require("./yourController");
describe('slack message',()=>{
beforeEach(()=>{
const adapter = new SlackAdapter(SlackApiMock.slackAdapterMockParams);
adapter.use(new SlackEventMiddleware());
adapter.use(new SlackMessageTypeMiddleware());
this.controller = new BotMock({
adapter: adapter,
disable_webserver: true
});
SlackApiMock.bindMockApi(this.controller);
yourController(this.controller);
});
});
In your it
statement, use the controller.usersInput
method to define the conversation.
it('should return `help message` if user types `help`', async () => {
const message = await this.controller.usersInput(
[
{
type: "message",
user: 'someUserId',
channel: 'someChannel',
messages: [
{
text: 'help', isAssertion: true
}
]
}
]
);
return assert.equal(message.text, 'help message');
});
/* example of botkit response
{
type: 'message',
text: 'help message',
attachmentLayout: undefined,
attachments: undefined,
suggestedActions: undefined,
speak: undefined,
inputHint: undefined,
summary: undefined,
textFormat: undefined,
importance: undefined,
deliveryMode: undefined,
expiration: undefined,
value: undefined,
channelData:
{
channelId: 'slack',
serviceUrl: '',
conversation: {
id: 'someChannel',
thread_ts: null
},
from:
{
id: ''
},
recipient: { id: 'someUserId' } },
channelId: 'slack',
serviceUrl: undefined,
conversation: { id: 'someChannel', thread_ts: null },
from: { id: undefined },
recipient: { id: 'someUserId' }
}
*/
user
user slackId (required) (string)channel
is a channel where user sends messages (required) (string)type
specify botkit message type. ie direct_message
, message_received
, interactive_message_callback
. (defaults to direct_message
) (string)messages
(array) that includes:
isAssertion
indicates which conversation response array to return in .then()
in multi-user testing. (required) (boolean)deep
indicates the index of the conversation response to return in .then()
. 0 (default) is the last response, 1 is the second-to-last, etc.. (integer)timeout
set timeout for message in milliseconds (integer)waitBefore
alias for timeout
, indicates how many milliseconds to wait before sending the message to the bot (integer)waitAfter
indicates how many milliseconds to wait for the bot response, useful for long-running commands (integer)text
the message's text (string)channel
indicates the channel the message was sent in. This overrides the channel defined in usersInput
for this current message. (string)attachments
, callback_id
, etc...The Slack adapter is located in ./lib/slack. The ApiMock allows you to test Slack's API. It binds the following properties to the Botkit-Mock controller
.
controller.axiosMockAdapter
- Axios mock helps to mock requests to the Slack API. Examples of this are used in ./examples/general-slack/updateApiResponsesSpec.controller.apiLogByKey
- This contains information about results of requests through bot.api
.controller.httpBodyLog
- This contains an array of Botkit responses to Slack usually set through httpBody()
.Botkit-Mock supports all of Botkit's core functionality by default, but we need help creating adapters for platforms other than Slack. To add functionality to Botkit-Mock for your favorite chat platform, please open an issue and we can advise.
Botkit Starter Kit - Tests for the Botkit starter kit (Glitch)
Slack API - Tests for various Slack API calls. Includes API response overrides.
Built by the team at https://www.gratify.ai.
Like Botkit-Mock? Donate BTC to our team: 1KwpqzTvpLWiUST2V5wmPiT3twwc1pZ9tP
4.6.2
slackAdapterMockParams
for simple SlackAdapter
initializationFAQs
Write tests for botkit.
The npm package botkit-mock receives a total of 11 weekly downloads. As such, botkit-mock popularity was classified as not popular.
We found that botkit-mock demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.