如何为需要用户进行身份验证的Bot Framework v4对话框编写单元测试?

时间:2018-12-28 15:36:29

标签: c# unit-testing botframework

我正在为使用MS Bot Framework版本4创建的对话框编写单元测试(C#)。 我想知道如何对包含WaterfallDialog和OAuthPrompt的ComponentDialog进行单元测试,其中WaterfallDialog的一个步骤要求用户使用OAuthprompt登录?

当我使用TestAdapter和TestFlow为此类对话框编写单元测试时,出现以下异常:

OAuthPrompt.GetUserToken(): not supported by the current adapter

这是有道理的,因为TestAdapter不像BotFrameworkAdapter那样具有GetUserTokenAsync方法(此方法是从OAuthPrompt.GetUserToken调用的)。

我们如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

坦率的,诚实的答案是,要想在当今的单元测试中正确地考虑这一点,而又不花巨资来解决当今API的局限性,将是非常困难的。

正如您在此特定情况下所指出的,OAuthPrompt与作为ITurnContext::Adapter实例的BotFrameworkAdapter属性具有 strong 联系。单靠这是“不好的”,但同时,您实际上无法覆盖BotFrameworkAdapter实际上需要调用的OAuthPrompt上的API,这意味着您将完全陷入困境,除非使用高级功能。伪造框架,允许替换非虚拟成员。

老实说,仔细研究了一下,我认为您现在无法解决此问题。我恳请您在GitHub上的botbuilder-dotnet仓库中提出这个问题,我很乐意在此向团队提出建议,建议他们如何解决此问题。

答案 1 :(得分:0)

有一个出色的Channel 9系列可以解决这个问题,您可以在这里观看:https://channel9.msdn.com/Series/DevOps-for-the-Bot-Framework/