Tapestry 5ユニットテスト


もう1つの側面では、テンプレートファイルをテストすることができます.テンプレートファイルはHTMLファイルであり、HTMLファイルにテストが含まれる可能性があります.*ページフィールドには、テスト*テストlinkアクション*テストフォーム提出form 1が表示されます.ページフィールド表示テストは、第1章のスタートテンプレートで主に「Hello World!」と断言して表示されます.文字列.テスト手順はリスト2.5に示す.

  
  
  
  
  1. package com.kingbegin.web.pages; 
  2.  
  3. import org.apache.tapestry.dom.Document; 
  4. import org.apache.tapestry.test.PageTester; 
  5. import org.junit.Assert; 
  6. import org.junit.Before; 
  7. import org.junit.Test; 
  8.  
  9. public class StartTemplateTest { 
  10.  
  11.     PageTester tester; 
  12.     Document doc; 
  13.  
  14.     @Before 
  15.     public void setUp() throws Exception { 
  16.  
  17.         String appPackage = "com.kingbegin.web"
  18.         String appName = "App"// IoC Modeule , AppModule.java。 
  19.         tester = new PageTester(appPackage, appName, "WebRoot"); 
  20.         doc = tester.renderPage("Start"); 
  21.     } 
  22.  
  23.     @Test 
  24.     public void testGetMessage() { 
  25.         String message = doc.getElementById("label1").getChildMarkup().trim(); 
  26.         Assert.assertEquals(message, "Hello World!"); 
  27.     } 
  28.  

PageTesterオブジェクトはテスト補助クラスであり、PageTesterオブジェクトをインスタンス化するには3つのパラメータが必要である:appPackageはアプリケーションの基本パッケージであり、appNameはIoCコンテナのModeule名前のデフォルトAppModuleである.JAvaは、我々のケースではModeuleがないので、デフォルトのApp、WebRootはテンプレートファイルがある場所です.renderPageメソッドは、プレゼンテーションページをシミュレートしてDocumentオブジェクトを得る方法であり、XHTMLファイルはXMLドキュメントと見なすことができ、Documentオブジェクトは全体のページであり、DocumentのgetElementById(「label 1」)メソッドは、idが「label 1」であるElementオブジェクトを取得し、getChildMarkup()を呼び出すことで要素の内容を得ることができ、戻る内容にはリターンとスペースがある可能性があるため、trim()メソッドを呼び出すのに役立ちます.最後にlabel 1の内容を「HelloWorld!」と断言します.

  
  
  
  
  1. tapestry-test-5.0.11.jar 
  2.  
  3. If the page requires a context, you can pass it this way: 
  4. public class MyTest extends Assert 
  5.     @Test 
  6.     public void test1() 
  7.     { 
  8.         String appPackage = "org.example.app"
  9.         String appName = "LocaleApp"
  10.         PageTester tester = new PageTester(appPackage, appName, "src/main/webapp"); 
  11.         Object[] context = new Object[]{ "abc"123 }; 
  12.         Document doc = tester.invoke(new ComponentInvocation(new PageLinkTarget("MyPage"), context)); 
  13.         assertEquals(doc.getElementById("id1").getChildText(), "hello"); 
  14.     } 

http://tapestry.apache.org/tapestry5/tapestry-core/guide/unit-testing-pages.html Testing an action link After rendering a page, you may want to "click"on an action link and then assert against the resulting page. You can do it this way:

  
  
  
  
  1. public class MyTest extends Assert 
  2.     @Test 
  3.     public void test1() 
  4.     { 
  5.         String appPackage = "org.example.app"
  6.         String appName = "LocaleApp"
  7.         PageTester tester = new PageTester(appPackage, appName, "src/main/webapp"); 
  8.         Document doc = tester.renderPage("MyPage"); 
  9.         Element link = doc.getElementById("link1"); 
  10.         doc = tester.clickLink(link); 
  11.         assertTrue(doc.toString().contains("abc")); 
  12.     } 

Testing a form submission After rendering a page, you may want to fill out a form, submit it and then inspect the resulting page. You can do it this way:

  
  
  
  
  1. public class MyTest extends Assert 
  2.     @Test 
  3.     public void test1() 
  4.     { 
  5.         String appPackage = "org.example.app"
  6.         String appName = "LocaleApp"
  7.         PageTester tester = new PageTester(appPackage, appName, "src/main/webapp"); 
  8.         Document doc = tester.renderPage("MyPage"); 
  9.         Element form = doc.getElementById("form1"); 
  10.         Map<String, String> fieldValues = new HashMap<String, String>(); 
  11.         fieldValues.put("field1""hello"); 
  12.         fieldValues.put("field2""100"); 
  13.         doc = tester.submitForm(form, fieldValues); 
  14.         assertTrue(doc.toString().contains("abc")); 
  15.     } 

To submit a form by clicking a submit button, call the clickSubmit() method instead. Unit testing a component To unit test a component, just create a test page containing that component. Then unit test that page.