2017-05-18 4 views
0

私は、ボタンなどのオプションのリストを提示し、ダイアログを持っています。MS Bot Framework:ボタンのテストを書くには?

bot.dialog('menu', [ 
     (session) => { 
      builder.Prompts.choice(
       session, 
       'Your choices', 
       ['A', 'B', 'C', 'Exit'], 
       { 
        listStyle: builder.ListStyle.button 
      }); 

     }, 
     (session, results) => { 
      let input = _.get(results, 'response.entity', null) || _.get(session, 'message.text', null); 
      switch (input) { 
       default: 
        session.endDialog("Please chose from available options."); 
        break; 
       case 'A': 
        session.send("You chose A"); 
        break; 
       case 'B': 
        session.beginDialog("You chose B"); 
        break; 
       case 'C': 
        session.beginDialog("You chose C"); 
        break; 
       case 'Exit': 
        session.endDialog("Thanks for using menu!"); 
        break; 
     } 
    }] 
    ).triggerAction({ 
     matches: /^(menu)$/i 
    }) 
} 

私はどちらかのボタンを押すか、テキスト入力による選択を入力したときにこれが動作します。

私は自動テストを通じて対話をテストする場合しかし、それはテキスト入力に満足していないです。私がいない場合connector.processMessage()てボタンをテストするにはどうすればよい

Oops something went wrong and we need to start over. 

:ステップ2で

describe('menuDialog', function (done) { 
    this.timeout(50000); 

    // Test case for menu 
    it('should present a list of options', function (done) { 
     var step = 0; 
     var connector = new builder.ConsoleConnector(); 
     var bot = universalBot(connector); 

     // Register a dialog to test 
     menuDialog(bot, builder); 


     bot.on('send', function (message) { 
      switch (++step) { 
       case 1: 
        console.log(`Step : ${step}`); 
        assert(message.text == 'Your Choices'); 
        connector.processMessage('A'); 
        done() 
        break; 
       case 2: 
        console.log("STEP : ", step) 
        assert(message.text == 'You Chose A'); 
        done() 
        break; 
      } 
     }); 
     connector.processMessage('menu'); 
    }); 

}); 

テストが失敗したとmessage.textがある:ここでは

はテストですか?あなたは、テストがアクセスできるように、テストブロック内で、あなたのボットのダイアログコードを配置する必要があり

おかげ

+0

、 'アサート(message.text ==ない 'あなたはAを選んだ);​​'閉鎖を必要としますか '''?すなわち '資産(message.text == 'あなたはAを選んだ');' は 'Choices'と' Chose'は小文字ことになっていますか? –

+0

うん、それは質問のタイプミスだった。 – moaglee

答えて

0

。ここで

はテスト目的の作業バージョンです:私はモカを使用していない

// BEGIN buttons.test.js 

var builder = require('botbuilder'); 
var assert = require('assert'); 

describe('menuDialog', function() { 
    this.timeout(5000); 
    // Test case for menu 
    it('should present a list of options', function (done) { 
     var step = 0; 
     var connector = new builder.ConsoleConnector(); 
     //var bot = universalBot(connector); 
     var bot = new builder.UniversalBot(connector); 

     bot.dialog('/', [ 
      (session) => { 
       builder.Prompts.choice(session, 'Your choices', ['A', 'B', 'C', 'Exit'], {listStyle: builder.ListStyle.button}); 

      }, 
      (session, results) => { 
       console.log('selected option: ' + results.response.entity); 

       switch (results.response.entity) { 
        case 'A': 
         session.send("You picked A"); 
         break; 
        case 'B': 
         session.beginDialog("You picked B"); 
         break; 
        case 'C': 
         session.beginDialog("You picked C"); 
         break; 
        case 'Exit': 
         session.endDialog("You picked Exit"); 
         break; 
        default: 
         session.endDialog("Please chose from available options."); 
         break; 
       } 
      } 
     ]); 

     bot.on('send', function (message) { 
      switch (++step) { 
       case 1: 
        console.log(`Step: ${step}`); 
        assert(message.text == 'Your choices'); 
        connector.processMessage('A'); 
        done(); 
        break; 
       case 2: 
        console.log(`Step: ${step}`); 
        assert(message.text == 'You picked A'); 
        done(); 
        break; 
      } 
     }); 
     connector.processMessage('start'); 
    }); 
}); 

// END buttons.test.js 
// to run: mocha buttons.test.js 
+0

これはそうしていますmenuDialog(bot、builder) – moaglee

関連する問題