【问题标题】:Unit Testing Bot Framework单元测试机器人框架
【发布时间】:2018-10-25 17:59:26
【问题描述】:

我正试图弄清楚如何对基本的 MS Bot Framework 对话框进行单元测试,但无法让它像互联网上所说的那样工作。

我发现的所有内容基本上都遵循以下内容: https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Tests/Microsoft.Bot.Sample.Tests/EchoBotTests.cs

嗯,这就是问题所在:

等待 Conversation.SendAsync(scope, toBot);

这被定义为内部的,因此它不能在 bot.builder 代码之外访问。因此,除非您为内部 bot.builder 内容编写测试,否则它完全没用。

有没有解决这个问题的新方法?

【问题讨论】:

    标签: unit-testing botframework


    【解决方案1】:

    Bot Framework 是一个开源项目,您可以下载代码并根据需要进行修改。在您的情况下,删除 internal 关键字。另一种选择是创建一个从您尝试使用的类继承的新类,并对需要覆盖的方法设置自己的访问级别。 This blog post 描述了如何在本地使用代码。

    【讨论】:

    • 一旦你这样做了,你有什么建议让本地代码与 Bot Framework 的最新更改保持同步?执行您的建议似乎是一个非常糟糕的主意。如果我希望修改 Bot Framework 内部代码,我会在 GitHub 中更改它并提交一个拉取请求。这不是我在这里要问的。
    • 人们拥有适合自己需求的自定义 SDK 版本并不少见。但是,如果您使用继承方法,您只需通过新版本的 SDK 维护自己的代码,而不必担心 SDK 源代码。如果您觉得这个建议过于繁琐,那么这对您来说不是一个好建议。
    • Burdensome 不是我所说的那样,我会离开这里使用的词。既然你是一名 MS 工程师,你知道微软是否打算不让人们使用这些 DialogTestBase 类,除非他们按照你建议的方式修改代码?微软的意图是什么?我们应该改用 Microsoft Fakes 库吗? MS对此没有官方意见或方向吗?
    • 我认为这里的混淆在于您提到的测试资源是为 botbuilder 的内部测试和回购中包含的样本创建的。这不是作为“我们希望每个人都使用的官方机器人测试库”发布的。但是,正如我所提到的,您确实可以通过使用我描述的技术将其作为一个整体使用。我不理解以与 SDK 测试中使用的方式相同的方式使用 DialogTest Base 的厌恶,从它继承并自定义一个类来测试特定的机器人功能。你能详细说明你为什么不想这样做吗?
    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2019-02-16
    • 2021-04-13
    • 2014-11-17
    相关资源
    最近更新 更多