私のアプリケーションは、ログインが成功した後、応答に Cookie 'XYZ' を追加します。この Cookie は、ログイン後のアプリの特定の動作を決定します。
私は shiro FormAuthenticationFilter を使用しています。これが Cookie の追加方法です。
@Override
public boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest
request, ServletResponse response) throws Exception {
Cookie cookie = new Cookie('XYZ', '123');
cookie.setPath("/");
cookie.setMaxAge(-1);
response.addCookie(cookie);
}
この Cookie が正しく設定されていないため、HTMLUnit を使用してこの動作をアサートする機能テストは失敗します。Chrome でアプリを使用すると、問題なく動作します。HTMLUnit テストをデバッグすると、ログインに成功した後、次のメソッドであることが証明されました。
driver.manage.getCookies()
アプリケーションによって設定された追加の Cookie「XYZ」ではなく、JESSIONID Cookie のみを返します。
注: ログイン後以外のページにこの Cookie を設定すると、htmlunit が取得します。
考えてください?