检票口单元测试:startPage(页面)和startPage(Class <page> pageClass)的奇怪行为</page>

时间:2013-05-13 08:37:57

标签: java exception testing junit wicket

我的单元测试有一些奇怪的行为。

我的简单页面如下:

public class RegistrationPage extends BasePage {

public RegistrationPage(IModel<Service> model) {

    isUserLoggedIn();
    add(new RegistrationPanel("registration", model));

}

public RegistrationPage() {

    isUserLoggedIn();
}

/**
 * Checks if a user is logged in.
 * If not, the user will be redirected to the LoginPage.
 * 
 */
public void isUserLoggedIn() {

    if (!getSession().isSignedIn()) {

        //  redirectToInterceptPage(new LoginPage());
        setResponsePage(new LoginPage());

    }
}

}

现在我想在2个简单的测试中测试这个页面: 首先,我想检查如果没有用户登录,页面是否呈现:

    @Test
public void testRegistrationPage() {

    wicketTester.startPage(RegistrationPage.class);

    // it will redirect to the LoginPage
    wicketTester.assertRenderedPage(LoginPage.class);

}

我希望测试能通过。正确!由于我的isUserLoggedIn()方法,它被识别为没有用户登录,因此它将被重定向到LoginPage。

现在重点是我想用模型检查我的RegistrationPage。好的,接下来的测试:

    @Test
public void testRegistrationPage() {

    wicketTester.startPage(new RegistrationPage(new Model<Service>(new Service("test", "test", "test"))));

    // it will redirect to the LoginPage
    wicketTester.assertRenderedPage(LoginPage.class);

}

我的期望是什么?我在预期的测试中也是如此。这意味着应该呈现LoginPage ......但它不是!

junit.framework.AssertionFailedError:类不一样,预期'class LoginPage',当前'class RegistrationPage'

看起来startPage(Page page)方法创建并使用有效会话。 但我的会话只接受具有管理员/管理员凭据的用户。

这两个startPage(..)方法(类,页面)有什么区别?这有点奇怪,同样的测试只有一个区别:使用模型。然后就失败了。

有人可以提供建议吗?

修改

在我的会话中,我使用SpringSecurity通过ldap进行身份验证。但在我的测试用例中,我有一个包含2个硬编码用户的存储库。 admin / admin和user / user。但我认为如果有人正确认证,会话只会被解决。我不在我的测试用例中进行身份验证。那么为什么会有“认证”会话?!

0 个答案:

没有答案