Microsoft Bot UnitTest

以前写了Bot单元测试的实现没有通用性,现在来优化提高适用性,源码:https://github.com/oliver1191/TestWebRequest

实现功能:通过脚本来实现Bot的功能测试

1.自定义脚本模板,其中serverUrl是监听的接口,messagetype是发送给bot消息的类型,minReceiveMessageCount是接受bot消息的条数才返回消息,element.innertext是发送消息的文本



   
  
    Hello 1
	Hello 2	
	Hello 3	
	Hello 4
	Hello 5	
	Hello 6	
  

2.检查监听bot返回的消息是否valid

private CheckMessageResult CheckReceiveMessageIsValid(Activity receiveActivity)
        {
            CheckMessageResult checkMessageResult = new CheckMessageResult();
            //简单的对话逻辑,qna这种问答,不涉及复杂的dialog逻辑            
            if (currentOptionSetting.optionType == OptionType.SmartTalkOption)
            {
                checkMessageResult = CheckReceiveMessageIsSmartTalkValid(receiveActivity);
            }
            //检测其他复杂的option操作
            else if (currentOptionSetting.optionType == OptionType.RestoreOption)
            {
                checkMessageResult = CheckReceiveMessageIsRestoreOptionValid(receiveActivity);
            }
            return checkMessageResult;
        }

3.简单对话逻辑

private CheckMessageResult CheckReceiveMessageIsSmartTalkValid(Activity receiveActivity)
{
            CheckMessageResult checkMessageResult = new CheckMessageResult();
            if (currentReceiveMessage < currentStepSetting.minReceiveMessageCount)
            {
                currentReceiveMessage++;
                checkMessageResult.IsValid = true;
                checkMessageResult.IsNeedReply = false;
                return checkMessageResult;
            }
            var text = receiveActivity.Text;
            if (!string.IsNullOrEmpty(text))
            {
                checkMessageResult = GotoNextStep();
                Console.WriteLine("Smart Talk.lastreplytext:{0},nextsteptext:{1}", text, currentStepSetting.textValue);
                logger.WriteLog(string.Format("Smart Talk.lastreplytext:{0},nextsteptext:{1}", text, currentStepSetting.textValue));
            }
            return checkMessageResult;
}

4.根据检查的结果来继续下一步脚本的操作

5.也能实现复杂的对话逻辑,例如herocard,adaptivecard以及dialog的上下文连续对话,后面会不间断更新

单元测试源码:https://github.com/oliver1191/BotUnitTest

你可能感兴趣的:(Microsoft,Bot,Framework开发)