我正在为使用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调用的)。
我们如何解决这个问题?
答案 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/