我正在尝试为 Echobot 进行单元测试(只是为了了解它是如何工作的,以便我可以将它用于我的实际机器人),但有一个问题我无法解决。我面临的问题是我正在使用 ITurnContext 并且我遇到的每个示例都在使用 DialogContext(使用 IWaitable 发送消息)。
ITurnContext 是只可读的,所以我不能在其中设置任何东西,除非我在 SetUp 类中设置它,这不是那么漂亮 - 但它有效,所以我继续只是想看看会发生什么,但我得到了一个错误:
Message: Moq.MockException :
Expected invocation on the mock at least once, but was never performed: c => c.PostAsync(Mock<Microsoft.Bot.Builder.ITurnContext:00000001>.Object, "You sent 'test'")
No setups configured.
No invocations performed.
首先,我使用本指南开始:https
://medium.com/@createdincode/simple-unit-testing-in-microsofts-c-bot-framework-with-nunit-and-moq-345b805ecd1b 在我遇到一些问题之后我尝试在线搜索并遇到此线程的问题:自动测试 Microsoft Bot Framework => 但顶部答案中提供的链接都给了我 404..
同样适用于这个单元测试 Bot Framework,遗憾的是:(
测试类目前是这样的:
namespace EchoBot.UnitTest
{
[TestFixture]
class EchoTest
{
private Mock<IChatHelper> _chat;
private EchoBotBot _echobot;
private Mock<ITurnContext> _context;
[SetUp]
public void SetUp()
{
_chat = new Mock<IChatHelper>();
_echobot = new EchoBotBot(_chat.Object);
var activity = new Activity(ActivityTypes.Message);
activity.Text = "test";
_context = new Mock<ITurnContext>();
_context.Setup(c => c.Activity).Returns(activity);
}
[Test]
public async Task echoBackTest()
{
await _echobot.OnTurnAsync(_context.Object);
_chat.Verify(c => c.PostAsync(_context.Object, "You sent 'test'"));
}
}
}
而且Helper类和我发的指南一样,只是我把DialogContext改成了ITurnContext。我不知道如何修复此错误,我害怕将自己困在最小起订量漏洞中(如果您明白我的意思)。
我希望我描述的一切都足够好,并且有人可以帮助我!提前致谢 (:
呼啦一阵风
守候你守候我
随时随地看视频慕课网APP
相关分类