測定者のテスト技術ノート:Screenplayモード(Journeyモード)
2177 ワード
Screenplayモード(Journeyモード)
Screenplayモード
JunitのScreenplay
例を挙げる
Actor theReceptionist = new Actor().with(WebBrowsing.ability())theReceptionist.attemptsTo( Go.to(findOwnersScreen.url()), Search.forOwnersWith(EMPTY_SEARCH_TERMS), Count.theNumberOfOwners());assertThat( theReceptionist.sawThatThe(numberOfOwners()), was(TheExpectedNumberOfOwners));
Actor theReceptionist = new Actor().with(WebBrowsing.ability())theReceptionist.attemptsTo( Go.to(findOwnersScreen.url()), Search.forOwnersWith(EMPTY_SEARCH_TERMS), Count.theNumberOfOwners());assertThat( theReceptionist.sawThatThe(numberOfOwners()), was(TheExpectedNumberOfOwners));
private static String searchTerms; @Override public void performAs(Actor asAReceptionist){ asAReceptionist.attemptTo( Enter.the(searchTerms).into(findOwnersScreen.searchTerms), Click.onThe(findOwnersScreen.searchButton) ); } public SearchForOwnersWith(String searchTerms){ this.searchTerms = searchTerms; }
@ Url("owner/find.html") public class FindOwnerScreen extends WebScreen{ @LocateBy(css="#search-owner-form input") public ScreenElement searchTerms; @LocateBy(css="##search-owner-form button") public SearchElement searchButton;
public class Enter extends WebDriverInteraction implements Perform{ private String text; private ScreenElement field; public void performAs(Actor actor){ web(actor).findElement(field.locator()).sendKeys(text); } public Enter(String text){this.text = text;} public static Enter the(String text){return new Enter(text);} public Perform into(ScreenElement field){ this.field = field; return this; } }
優越性
POモードよりも