私はダガーに非常に慣れていません-それが私のアプリケーションで機能するかどうかはまだわかりません
特定の有名人に関する最新ニュースを返す検索ページがあります。
人気の有名人を検索したときに結果がページに表示されることを確認するテストを作成しました。
にはpage
、コンストラクターsearchField
に必要な がありpage
、テストに使用する Web ドライバーがそれを選択できるようにします。
有名人検索ページのテスト
public class CelebritySearchPageTest {
@Test
public void testSearchResultsForKevinBaconVerifyHisPopularity() {
CelebritySearchPage searchPage = new CelebritySearchPage();
searchPage.searchFor("Kevin Bacon");
Assert.assertTrue(searchPage.getNumberOfResults() > 9999999, "Verify that Kevin Bacon is still relevant");
}
}
有名人検索ページ
public class CelebritySearchPage extends Page {
@Inject
@Named("search field")
TextField searchField;
public void searchFor(String text) {
searchField.setText(text);
// ...
}
public int getNumberOfResults() {
// ...
}
}
有名人検索ページ モジュール
@Module(injects = CelebritySearchPage.class)
public class CelebritySearchPageModule {
@Provides
@Named("search field")
public TextField provideSearchField() {
return new TextField(/* How do I get the page? */, "#searchField");
}
}
ページ
public abstract class Page {
// ...
}
テキストフィールド
public class TextField {
protected Page page;
protected String selector;
public TextField(Page page, String selector) {
this.page = page;
this.selector = selector;
}
public void setText(String text) {
// ...
}
}
問題は、それpage
が必要searchField
であるが、searchField
必要であるということpage
です。この循環依存を克服するにはどうすればよいですか?
searchField
CelebritySearchPage 内で初期化できません