محاكاة الزر مرة أخرى/توجيه/تحديث في اختبار الوحدة مع الويكيت

StackOverflow https://stackoverflow.com/questions/2343914

  •  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());
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top