Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Bot框架V4中对提示验证器进行单元测试_C#_.net_Botframework - Fatal编程技术网

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是的,我还有这个问题。我已经更新了我的问题。如果还不清楚,请告诉我。谢谢