C# 如何在Bot框架V4中对提示验证器进行单元测试
在对话框中,我使用验证器检查用户输入。我有一句话是这样的:C# 如何在Bot框架V4中对提示验证器进行单元测试,c#,.net,botframework,C#,.net,Botframework,在对话框中,我使用验证器检查用户输入。我有一句话是这样的: AddDialog(新的文本提示(nameof(AskForCustomerId),validators.TestValidator)); 我还有一个类,它包含我对这个对话框的验证。该类如下所示: 公共类MyValidator:IMyValidator { 公共异步任务TestValidator(PromptValidatorContext promptContext,CancellationToken CancellationTok
AddDialog(新的文本提示(nameof(AskForCustomerId),validators.TestValidator));
我还有一个类,它包含我对这个对话框的验证。该类如下所示:
公共类MyValidator:IMyValidator
{
公共异步任务TestValidator(PromptValidatorContext promptContext,CancellationToken CancellationToken)
{
//做一些验证。。。
返回true;
}
}
我认为在另一个类中分离验证代码是个好主意
但是现在我想为这个特殊的类编写单元测试。但是我该怎么做呢
我尝试了以下操作,但无法创建PromptValidatorContext
的实例,因为构造函数是内部的
[事实]
公开无效测试()
{
//安排
var sut=newmyvalidator(sessionManagerMock.Object);
var prompt=new PromptValidatorContext();//构造函数是内部的..无法创建实例。
//表演
TestValidator()//如何传递参数?
//断言
}
有人知道如何进行单元测试吗
更新 所以我有一个对话框,在其中我注入了我的“验证器”类。我的对话类如下所示:
公共类MyDialog:BaseDialog
{
公共MyDialog(ICCustomerValidator验证程序):ComponentDialog
{
AddDialog(新建WaterWallDialog)(名称(WaterWallDialog),
新WaterwallStep[]
{
//…我的脚步
}));
AddDialog(新文本提示(名称)(步骤1示例));
AddDialog(新的文本提示(nameof(Step2Example),validator.CustomerIdValidator));
//等等。
InitialDialogId=nameof(WaterWallDialog);
}
}
I在单独的类中验证代码(因此是icCustomerValidator
)
公共类CustomerValidator:ICCustomerValidator
{
公共异步任务CustomerIdValidator(PromptValidatorContext promptContext,CancellationToken CancellationToken)
{
//范例
返回promptContext.Context.Activity.Text==“100”;
}
}
这一切都很好。但是,如何仅为
CustomerValidator
类编写单元测试呢?即使在测试中,也不能直接调用提示验证器。它们应该使用中所示的测试流或通过对话测试客户端进行间接测试。您看过Bot Builder.NET repo中的单元测试吗?@KyleDelaney是的,我看过,但没有找到任何有用的内容。您能解释一下您正在尝试做的哪些事情在PromptValidator ContextTests中还没有?你还在研究这个吗?@KyleDelaney是的,我还有这个问题。我已经更新了我的问题。如果还不清楚,请告诉我。谢谢