BotTester icon indicating copy to clipboard operation
BotTester copied to clipboard

Test dialogs independently

Open ihachani opened this issue 7 years ago • 7 comments

Is there a way to test Library without having to create a bot around it?

https://docs.botframework.com/en-us/node/builder/chat-reference/classes/botbuilder_d.library.html

ihachani avatar Feb 22 '18 15:02 ihachani

No, the framework requires a bot through which it can send and receive messages. You can make a simple bot that allows full logical and code coverage for your library though and test through that.

microsoftly avatar Feb 22 '18 18:02 microsoftly

Can some one add this? That would save some effort.

ihachani avatar Feb 24 '18 12:02 ihachani

Now that you mention it, this seems like it may be a useful feature. It would also be cool to setup mock data to preload with. So something like

new BotTester(bot)
    .WithDialog(dialog, <something here to set mock state when dialog starts>)
    .WithMiddleware(middleware)

Would you be interested in helping design the feature &/or the implementation?

microsoftly avatar Feb 24 '18 21:02 microsoftly

What I did to test the library was create a Bot then mapped the library default Dialog to the bot default Dialog.

let bot = new botbuilder.UniversalBot(new TestConnector());
let library = CustomLibrary.createLibrary();
bot.library(library);
bot.dialog('/', library.dialog('/'));

I am thinking something like this will be helpful:

new BotTester(bot)
    .WithDialog(['/',library.dialog('/')],['greeting', anotherDialog]);

ihachani avatar Feb 26 '18 09:02 ihachani

I think that would be a great addition. Would you be interested in being a contributor? It will help shape the library towards your needs.

microsoftly avatar Feb 26 '18 20:02 microsoftly

I will give it a try. Do you have some guidelines?

ihachani avatar Feb 27 '18 08:02 ihachani

  • follow the linter as closely as you can
  • tests that prove the new code works
    • this means failure and success cases
  • new features, such as this, should be included in the BotTester.mocha.spec.ts and include proper decorations as can be seen in the file to easily update the README.md
  • add the new test to the README
  • PRs should be made to the dev branch

microsoftly avatar Feb 27 '18 20:02 microsoftly