gpt4 book ai didi

node.js - 获取DialogSet.add() : Invalid dialog being added when testing

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:37 25 4
gpt4 key购买 nike

我正在尝试为我的机器人对话框构建一些测试。我对两个具有相同对话框名称的不同机器人使用相同的测试代码(和修改后的测试数据)。因此,两个机器人的 test.js 文件是相同的。但是,当我尝试在第二个机器人上通过 Mocha 运行测试时,每个测试都会收到一条 Error: DialogSet.add(): Invalid dial being linked. 消息。我的第一个机器人不会发生这种情况。我什至尝试用第一个(正在工作的)机器人中的对话文件替换第二个机器人中的对话框文件,但我仍然遇到相同的错误。因此,我在机器人之间找不到任何不同之处。我什至用第一个机器人中的文件替换了所有有问题的文件(测试、测试数据/对话和对话框本身),但仍然遇到相同的错误。最后,机器人之间的所有 botbuilder 软件包和其他依赖项都是相同的版本。我在这里不知所措......有人有什么想法吗?

这是正在调用的对话框。我省略了实际的对话框步骤,但这应该与问题无关,因为所有对话框添加事件都发生在构造函数中。

const { TextPrompt, ChoicePrompt, ConfirmPrompt, ChoiceFactory, ComponentDialog, WaterfallDialog, DialogSet, DialogTurnStatus } = require('botbuilder-dialogs');
const { VistaServiceHelper } = require('../helpers/vistaServiceHelper');
const { TrackingServiceHelper } = require('../helpers/trackingServiceHelper');
const { CosmosDbStorage } = require('botbuilder-azure');

const LINE_PROMPT = 'linePrompt';
const ORDER_PROMPT = 'orderPrompt';
const CRITERIA_PROMPT = 'criteriaPrompt';
const SEARCH_CRITERIA = ['GO', 'PO'];
const WATERFALL_DIALOG = 'waterfallDialog';
const CONFIRM_PROMPT = 'confirmPrompt';

// Static texts
const escalateMessage = `Escalation message here`

const msDay = 86400000;

class viewOrderDialog extends ComponentDialog {
constructor(dialogId, userDialogStateAccessor, userState) {
super(dialogId);

this.addDialog(new ChoicePrompt(CRITERIA_PROMPT));
this.addDialog(new TextPrompt(ORDER_PROMPT));
this.addDialog(new TextPrompt(LINE_PROMPT, this.validateLineNumber));
this.addDialog(new ConfirmPrompt(CONFIRM_PROMPT));
this.addDialog(new WaterfallDialog(WATERFALL_DIALOG, [
this.requestOrderNumber.bind(this),
this.selectSearchCriteria.bind(this),
this.displayLineItems.bind(this),
this.displayLineStatus.bind(this),
this.loopStep.bind(this)
]));

this.initialDialogId = WATERFALL_DIALOG;

this.integrationLog = new CosmosDbStorage({
serviceEndpoint: process.env.ACTUAL_SERVICE_ENDPOINT,
authKey: process.env.ACTUAL_AUTH_KEY,
databaseId: process.env.DATABASE,
collectionId: 'integration-logs'
});

this.queryData = {};

} // End constructor

最佳答案

我可以通过删除项目的 node_modules 文件夹中的 botbuilder-testing 文件夹并重新运行 npm install botbuilder-testing 来解决此问题(尽管我已经确认了 package.json 中的版本,并且 package-lock.json 显示了最新版本并且已运行 npm installnpm update)。

看来这确实源于某种versioning issue无论出于何种原因,只有完全删除该文件夹并重新安装才能修复它。

关于node.js - 获取DialogSet.add() : Invalid dialog being added when testing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58440065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com