gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:13:00 27 4
gpt4 key购买 nike

我正在为使用 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 调用的)。

我们如何解决这个问题?

最佳答案

直率、诚实的回答是,如果不投入大量资金来解决当今 API 的局限性,那么在今天的单元测试中很难正确考虑这一因素。

正如您在这个特定案例中指出的那样,OAuthPrompt 与作为 实例的 ITurnContext::Adapter 属性有联系BotFrameworkAdapter 具体来说。这本身就“不好”,但再加上您实际上无法覆盖 OAuthPrompt 实际上需要调用的 BotFrameworkAdapter 上的 API,这意味着您完全卡住,除非您使用允许替换非虚拟成员的高级伪造框架。

老实说,在对此进行了一些调查后,我认为您现在无法解决这个问题。我恳请您在 GitHub 上的 botbuilder-dotnet 存储库中提出这个问题,我很乐意参与其中,向团队提出有关如何解决此问题的建议。

2019 年 8 月 15 日更新

自最初的答案以来,这被重构以引入 IUserTokenProvider 接口(interface),OAuthPrompt 现在检查当前的 ITurnContext::Adapter 支持,如果是的话,调用它的实现。这意味着您现在可以模拟此接口(interface)并实现适当的测试场景。

关于c# - 如何为需要用户进行身份验证的 Bot Framework v4 对话框编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53960869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com