私はAngular 4 WebアプリケーションをテストするためにGeb(1.1.1)とSpock(1.1-groovy-2.4)とセレンドライバ(2.53.1)を使用しています。単一ページのWebアプリケーションがあり、モジュールの階層構造になるようにコンテンツを設定したい場合は、ページオブジェクトに移動するとモジュールの階層を調べてコンテンツを確認する方法を教えてください。例えば、私は以下のページクラスを持っている場合:Gebモジュールを別のGebモジュールのコンテンツとして使用してコンテンツを検証する方法は?
class HomePage extends Page {
static url = 'home'
static at = {
title == 'Home Page' && mainViewModule.displayed
}
static content = {
mainViewModule { module MainViewModule }
}
}
、その後MainViewModuleは、このように定義されています
class MainViewModule extends Module {
static content = {
mainView { $('div', class: 'main-view') }
dashboardModule { module DashboardModule }
}
}
その後、DashboardModule:
class DashboardModule extends Module {
static content = {
dashboard = { MainViewModule.find 'dashboard' }
subModule1 = { module SubModule1 }
subModule2 = { module SubModule2 }
}
}
サブモジュールは、一般的に次のようになり
:
class SubModuleX extends Module {
static content = {
...
}
}
場合は、次の操作を行い、私のテスト(スポックを使用して):
class SomeSpec extends GebReportingSpec {
def 'navigate to the home page'() {
when:
to HomePage
then:
at HomePage
}
}
は、どのように私はそれがモジュールの階層を通じてだけでなく、ダウン、ホームページのクラスで定義された内容を検証していることを確認することができますか?私はコードを(上記のように)持っている方法、私はセレクタを間違った値に変更することができますが、それでもテストは失敗しません。
これは単一ページアプリケーションなので、HomePageクラスを長すぎるようにしないようにしたいので、モジュールを使用してページの部分と機能を論理的な部分に分割することは意味があります。私は、より上位の(または含まれている)モジュールを拡張して構成するのではなく、集約を介してモジュールを関連付ける方が好きであり、集約されたモジュールの階層を介してコンテンツを検証できるはずですが、私の仮定が間違っていれば。私が前提に間違っている場合、どのようにこれにアプローチして、HomePageクラスのすべてを含めるのを避けるべきですか?
おかげで、 スティーブ