2017-10-13 7 views
2

私はBryntum SiestaとExtJsを自動テストに使い始めました。 私の最初の、私が期待していたような非常に簡単なテスト作業。 DRY-Codeに問題が発生しました。シエスタのグローバル機能

私は、ログインテスト用DRYコードを記述しようとしています。

は、実際にここで2例があります。 - 有効なデータ でログイン - それはグローバル変数/関数で動作しますJavaで非有効なデータ(間違ったパスワードAND/ORユーザー名)

でログイン。 そして、私は以前にjavascriptのグローバル変数のようなことをやったことがあると思いました。 しかし、それは動作しません。

だから私は私のトライアウト機能があります。

var testFunction = function(){ 
    console.log("I am a global function, and i am working!"); 
}; 

をし、私の目標は、私のTESTFILEに)(私のt.chainでそれを呼び出すことです:

{ 
      type: LoginUsername, 
      target: ">>#loginviewIdemId #loginForm #pwTriggerForm #fldName", 
      desc: 'Type in Username', 
     }, 

     function(next) { 
      testFunction(); 
      next(); 
     }, 

私がした関数を呼び出すときチェーンの上にこのテストファイルで作成された、それは動作します。 いくつかの基本的なjavascriptの質問は申し訳ありませんが、壊滅的になっています。D

ありがとうございます!

+1

テストファイル全体を投稿できますか?そして、あなたはどんなエラーを出していますか? – pagep

答えて

3

ユーティリティクラスを拡張して、DRY違反を防ぐことができます。このガイドポストでは、次のようにまとめています。https://www.bryntum.com/docs/siesta/#!/guide/extending_test_class

渡された番号の奇数パリティをチェックする2つの特別なアサーションを作成しましょう。通常、アサーションはステートメントをチェックし、その結果をSiesta.Test#passメソッドまたはSiesta.Test#failメソッドで報告する必要があります。失敗した場合

Class('MyProject.MyTestClass', { 
    isa  : Siesta.Test.ExtJS, 

    methods : { 

     isOdd : function (number, description) { 
      if (number % 2) { 
       this.pass(description); 
      } else { 
       this.fail(description, { 
        assertionName : 'isOdd', 
        got    : number, 
        annotation  : 'Need odd number' 
       }); 
      } 
     }, 

     isEven : function (number, description) { 
      if (!(number % 2)) { 
       this.pass(description); 
      } else { 
       this.fail(description, { 
        assertionName : 'isEven', 
        got    : number, 
        annotation  : 'Need even number' 
       }); 
      } 
     } 
    } 
}) 

、できるだけ障害に関する多くの情報を提供し、読みやすい形式で失敗メッセージをフォーマットしてみてください。その他のオプションについては、Siesta.Test#fail} メソッドドキュメントを参照してください。テストクラスをロードする必要があります

harness.configure({ 
    title  : 'Awesome Test Suite', 

    testClass : MyProject.MyTestClass, 

    preload  : [ 
     ... 
    ] 
}) 

:ハーネスは、あなたが{@link Siesta.Harness#TestClassを}設定オプションを設定することにより、使用するテストクラスを指定する必要があなたの新しいテストクラスを使用するようにするに

右シエスタ-all.jsファイルの後:

<!DOCTYPE html> 
<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="__path_to_siesta__/resources/css/siesta-all.css"> 
     <script type="text/javascript" src="__path_to_siesta__/siesta-all.js"></script> 

     <!-- The file with new test class --> 
     <script type="text/javascript" src="lib/MyTestClass.js"></script> 

     <script type="text/javascript" src="index.js"></script> 
    </head> 

    <body> 
    </body> 
</html> 

は今、あなたはすべてのあなたのテストでカスタムアサーションやユーティリティメソッドを使用することができます。

describe('My test', function(t) { 
    var nbr = 1; 

    t.isEven(nbr); // Will fail 
}) 
+0

私は水曜日の仕事でこれを試します、ありがとう! :) – adamswebspace

+0

こんにちは@mats私は新しい問題に遭遇しました。 – adamswebspace

+0

私はあなたが示した方法を使い、テストクラスを作った。 私の最初のテスト関数(これは値をとり、それをconsole.logで出力するテスト関数でした) 私はクラスに別のメソッドを追加し、isEven()関数の場合と同じように使用します。エラーメッセージが表示されます:isOddは関数ではありません。これは、私がドキュメントからFunctionを使用すると起こります。 – adamswebspace

関連する問題