2016-05-17 17 views
5

sto cercando di testare il flusso iDialog con un falso messaggio così:Microsoft.Rest.HttpOperationException in Microsoft.Bot.Builder.dll ("Accesso negato") durante il test PromptDialog.Confirm

 var toBot = new Message() 
     { 
      ConversationId = Guid.NewGuid().ToString(), 
      Text = "Test", 
     }; 

     Func<IDialog<T>> MakeRoot =() => testDialog; 
     toBot.From = new ChannelAccount(Guid.NewGuid().ToString()); 
     toBot.To = new ChannelAccount(Guid.NewGuid().ToString()); 

Quando colpisce il PromptDialog.Confirm, lancia l'eccezione "Microsoft.Rest.HttpOperationException nell'eccezione Microsoft.Bot.Builder.dll (" Accesso negato ")".

Se io non creo

 toBot.From = new ChannelAccount(Guid.NewGuid().ToString()); 

getta System.NullReferenceException per channelId.

PromptDialog.Confirm assomiglia a questo:

PromptDialog.Confirm(context, AfterErrorConfirmationAsync, Strings.ConfirmError, 
       Strings.InvalidInput); 

Come posso risolvere questo problema?

risposta

2

Il problema è stato causato da questo:

await context.PostAsync(replyMessage); 
    PromptDialog.Confirm(context, AfterErrorConfirmationAsync, Strings.ConfirmError, 
      Strings.InvalidInput); 

Avere una conferma dialogo subito dopo la pubblicazione di un messaggio per l'utente ha causato l'eccezione e, successivamente, il fallimento del test. Tuttavia non ha lanciato questa eccezione durante il runtime.

ho risolto il problema di cui sopra, combinando il messaggio di risposta con la stringa conferma come segue:

PromptDialog.Confirm(context, AfterErrorProcessingAsync, replyMessage + "\n\n" + Strings.ConfirmError, 
       Strings.InvalidInput); 

Lasciando aperta la questione se qualcuno ha una soluzione migliore.