Получение DialogSet.add (): при тестировании добавлен неверный диалог - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь создать несколько тестов для диалогов моего бота. Я использую один и тот же тестовый код (и модифицированные тестовые данные) с двумя разными ботами с одинаковыми названиями диалогов. Таким образом, файл test.js одинаков для обоих ботов. Однако, когда я пытаюсь запустить свои тесты через Mocha на втором боте, я получаю сообщение Error: DialogSet.add(): Invalid dialog being added. для каждого теста. Такого не бывает с моим первым ботом. Я даже попытался заменить диалоговый файл во втором боте файлом из первого (работающего), и я все еще получил ту же ошибку. Таким образом, я не могу найти что-то другое между ботами. Я даже заменил все рассматриваемые файлы (тест, данные теста / диалог и сам диалог) на файлы от первого бота, и все еще получил ту же ошибку. Наконец, все пакеты 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

1 Ответ

1 голос
/ 18 октября 2019

Мне удалось это исправить, удалив папку для тестирования botbuilder в папке проекта node_modules и повторно запустив npm install botbuilder-testing (хотя я уже подтвердил версию в package.json и package-lock.json показывали последнюю версию и имелизапустите npm install и npm update).

Похоже, это произошло из-за какой-то проблемы контроля версий и по какой-то причине только полное удаление папки и ее повторная установка исправили ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...