2017-10-11 4 views
1

私はデータ形式を持っており、textfield,datefieldおよびcomboboxのようないくつかの項目を含んでいます。どのように私はcomboboxのためのシエスタとの選択項目を作ることができるだろうと私はcomboboxajax要求を介してデータがロードされているので、私は30000ms以上のシエスタの待ち時間を設定する必要があります。Bryntum Siesta TestでExtJSコンボボックスを選択するには?

私が使用したスニペットが失敗しました。 (積極的にBryntumの開発者によって監視されている)Siesta support forumに、このような質問を投稿する

t.it('Should create a new registration', function (t) { 
     t.chain(
      {click: '>> button[text=New]'}, 
      {waitForCQ: 'regdata[title=New Registration]'}, 
      {click: '>> firstnamefld[xtype=firstnamefld]'}, 
      {type: 'Siesta Reg', target: '>> firstnamefld[xtype=firstnamefld]'}, 
      {click: '>> lastnamefld[xtype=lastnamefld]'}, 
      {type: 'Test One', target: '>> lastnamefld[xtype=lastnamefld]'}, 
      {click: '>> datefld[xtype=datefld]'}, 
      {type: '11.10.2017', target: '>> checkinfld[xtype=checkinfld]'}, //Probably that's not correct way to choose date on datefield but it works 

//Here is making ajax request to load data in combo.but Siesta isn't waiting for selection. 
//I shouldn't use 'type' for this part but I couldn't find any proper property. 
       {click: '>> groupcombo[xtype=groupcombo]'}, 
       {type: 'Group One', target: '>> groupcombo[xtype=groupcombo]'} 

答えて

2

その最高。 Stackoverflowに関する質問も同様に歓迎されますが、しばらくの間気づかれないままになるかもしれません。

シエスタのすべての "waitFor"メソッド/アクションの最大待ち時間を設定するには、waitForTimeout設定オプションを使用できます。

あなたが何か行うことができます「groupcombo」クリックした後に完了するためにAjaxリクエストを待つために:

{click: '>> groupcombo[xtype=groupcombo]'}, 
{ 
    waitFor : function() { 
     if (someConditionThatIsTrueOnceAjaxRequestHasCompleted) return true 
    } 
}, 
{type: 'Group One', target: '>> groupcombo[xtype=groupcombo]'} 

潜在的な競合状態がこのコードでありますことに注意してくださいを、(hereを説明)

また、一部のフィールドの値を設定すると、実際にはこれらのフィールドを結びつける他のコアビジネスロジックを検証していることに注意してください。

t.chain(
    function (next) { 
     t.cq1('compqueryselector1').setValue('someValue1') 
     t.cq1('compqueryselector2').setValue('someValue2') 
     next() 
    }, 
    function (next) { 
     t.pass(businessLogicIsCorrect(), "Business logic rules works") 
     next() 
    } 
) 

これは、多くの場合、テストを簡素化し、はるかに高速です。したがって、実際のタイピング/クリックを実行するための厳密な必要はありません、あなただけの直接フィールドの値を設定することができます。

+0

親愛なる@SamuraiJack私はチェーンを 't.cq1'、' setValue'メソッドで使っています。 setValue( 'GOO') next() } 'しかし、私がテストを実行したとき、それはコンボの中の値を選択しています。しかし、渡されたテストを受け入れる:| –

+0

右、 "setValue"はExtフィールドクラスのメソッドであり、テストでアサーションを作成しません。 – SamuraiJack

関連する問題