في اختبار وحدة Webflow Spring Webflow، كيف يمكنك تأكيد أن حالة العرض لها رؤية اسم معين؟

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

سؤال

أقوم بتطوير ملفات تعريف الربيع، في محاولة لاستخدام TDD لذلك لقد قمت بتوسيع absressxmlflowextests. لا أستطيع أن أرى طريقة واضحة لتأكيد ما كنت أفكر فيه سيكون شيئا بسيطا: أن حالة العرض لها طريقة عرض مرتبطة باسم معين. على سبيل المثال، بالنظر إلى هذا التدفق (مقتطفات):

<?xml version="1.0" encoding="UTF-8"?>
<flow ...>
    ...
    <view-state id="foo" view="barView">
    </view-state>
</flow>

واختبار الوحدة

public void testAssertFooStateHasBarView() {
    ...
    assertCurrentStateEquals("foo");
    assertTrue( getFlowDefinition().getState("confirmation").isViewState());
    // Surely there's an easier way...?
    ViewState viewState = (ViewState)getFlowDefinition().getState("foo");
    View view = viewState.getViewFactory().getView(new MockRequestContext());
    // yuck!
    assertTrue(view.toString().contains("barView"));
}

هل هناك طريقة أبسط لتأكيد هذه الدولة foo لديه عرض barView?

هل كانت مفيدة؟

المحلول

يمكنك استخدام هذا:

assertResponseWrittenEquals("barView", context);

أين context هل لديك MockExternalContext.

هذه هي الطريقة التي أختبرها دائما على أي حال.

نصائح أخرى

إذا كنت تقوم بالفعل بأحداث تشير، فيمكنك الحصول على المشتبارات وتحقق من الاسم عبر هذه الطريقة:

assertViewNameEquals("Your View Name", applicationView(viewSelection));

لا أستطيع التحدث إلى بقية الاختبارات الخاصة بك، أو كيفية استخدام ملفات الإنترنت، ولكن لماذا تستخدم contains() لاختبار المساواة؟ أنا متأكد من أنك لا تريد عرض "بارفيولا" لمطابقة الاختبار الخاص بك، هل؟

assertEquals("barView", view.toString());
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top