2017-10-26 15 views
0

完全な開示:私はGebとSpockの両方に非常に新しいです。Spockデータテーブルを使用してGebページオブジェクトをテストする

私が取り組んでいるテストスイートの一部として、いくつかのページ要素で同じテストをテストする必要があります。私はSpockデータテーブルを使ってこの振る舞いを抽象化できることを望んでいます。しかし、私がこれを行うと、Gebはページプロパティを認識しないと不平を言う。ここで

は私が話しているかの最低限の例です。この例では

when: 
textBox = value 
submit() 

then:"value is updated" 
at SuccessPage 
textBox == value 

where: 
textBox | value 
box1 | val1 
box2 | val2 
box3 | val3 

、ボックス1-3はページ内容オブジェクトで定義されています。

これらのテストは、個別に行うと機能しますが、データテーブルを使用すると機能しません。 Geb要素が正しく置換されないのはなぜですか?

+0

可能な重複@Stepwiseが使用されていない限りモジュールをコンテンツとして解決できません](https://stackoverflow.com/questions/46435166/class-cannot-resolve-module-as-content-unless-stepwise-used) –

+0

@Stepwiseを追加しても何も解決しませんでした?また、その質問の根拠は非常に異なっていた。その場合は、setup()メソッドとsetupSpec()メソッドを混在させることでした。私の場合、データテーブルは期待どおりの値に置き換えられません。 – nmg49

+0

「@ Stepwise」は、問題を隠した解決策ではありません。 –

答えて

5

データテーブルは、指定されたテストのコンテキスト外で実行されます。実際にそれらのテストに基づいてテストの複数の反復を実際に構築する方法を知るためには、それらを実行する必要があります。そのコンテキストでは、box1は、ブラウザがまだSuccessPageを指していないので、ページプロパティを指していません。あなたは(Stringのインスタンスになります)、コンテンツ名を使用して、右のコンテキストにあるときに、ページのプロパティとしてそれらを解決する必要があります、それを回避するために

:[クラスの

when: 
page."$textBox" = value 
submit() 

then:"value is updated" 
at SuccessPage 
page."$textBox" == value 

where: 
textBox | value 
'box1' | val1 
'box2' | val2 
'box3' | val3 
関連する問題