محاكاة الزر مرة أخرى/توجيه/تحديث في اختبار الوحدة مع الويكيت
-
23-09-2019 - |
سؤال
أرغب في اختبار الوحدة (Junit 4) سلوك صفحاتي عندما يتم النقر فوق الزر الخلفي للمستعرض (أو إلى الأمام أو التحديث).
هل يمكنني محاكاة أزرار المتصفح/الأمام/التحديث بطريقة أو بأخرى في اختبار الوحدة؟ هل هناك فئة فائدة توفر هذه الوظيفة؟
التعديل الثاني:
أفهم أن مرافق اختبار الويكيت لا تحاكي متصفحًا مع تاريخ كامل. من فهمي ، سأحتاج إلى الأمرين التاليين لمحاكاة سلوك المتصفح من اختبار الوحدة:
(1) يجب أن تخبرني الويكيت بالطلب الدقيق (على سبيل المثال عنوان URL) عندما أتصل WicketTester.startPage()
أو WicketTester.clickLink()
.
(2) يتعين على الويكيت معالجة نفس الطلب مرة أخرى ، على سبيل المثال بقبول عنوان URL الذي تم تسجيله مسبقًا بواسطة (1).
أريد أن أفعل هذا بطريقة متوافقة مع WicketTester
, FormTester
وهكذا ، حيث أستخدم مكتشفي المكونات ، والتأكيدات ، والمزيد من الوظائف اللطيفة في هذه الفئات. هذا يعني أنه يتعين علي إصدار طلبات من مرافق الويكيت وليس من عملاء خارجيين مثل httpunit / htmlunit / selenium.
المحلول
لا يمكنك محاكاة وظائف "الظهر" في اختبارات وحدة الويكيت ، فهي خارج نطاق ما تفعله الويكيت ، ومع ذلك ، يمكنك اختبار أي شيء يحدث تقريبًا عند النقر مرة أخرى
انشر شيئًا أكثر تحديداً حول ما تحاول اختباره ، فإن زر الخلف عمومًا سيمنحك مجموعة من المكونات "المنفصلة" في الويكيت ، ويمكنك اختبارها
نصائح أخرى
من المؤكد أن هذا لا يدعمه ويكيتستر ، والذي يستخدم صراحة ويب ويب وهمية لا تدعم زر العودة لحفظ الموارد.
أظن أنه سيكون من المؤلم محاكاة في الويكيت ...
قد يكون أفضل رهان هو استخدام أداة اختبار قائمة على المتصفح مثل السيلينيوم RC. لم أجربها بنفسي ، لكن لديها ملف goBack()
الطريقة التي من شأنها محاكاة زر استرداد المتصفح.
الدفع htmlunit, ، يمكنك تقليد الأحداث الخلفية والأمام باستخدام تاريخ صف دراسي.
@Test
public void testHistory() throws IOException {
// Create a web client
final WebClient webClient = new WebClient();
// Surf to a page
final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net/");
// Click "Get started" link
page.getAnchorByHref("gettingStarted.html").click();
// Get History
History history = webClient.getCurrentWindow().getHistory();
// Current page
assertEquals("http://htmlunit.sourceforge.net/gettingStarted.html",
history.getUrl(history.getIndex()).toString());
// Go back one page
history.back();
assertEquals("http://htmlunit.sourceforge.net/",
history.getUrl(history.getIndex()).toString());
}