作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我喜欢 Spring MVC,因为你可以对你的 Controller 进行单元测试。
但是测试 oauth Controller 是另一回事。例如,如果我想获取授权 url,因为我想 Oauth 到 GData,我就必须部署网络应用程序,因为 Google 只会接受来 self 的域(我的网络应用程序的 url)的授权请求,而不是我的开发环境其域名为 localhost:8080。
所以现在我测试代码是否有效的唯一方法是部署代码并打印出我需要打印的数据。
我的 Controller ,这是一个多操作 Controller
public ModelAndView authorize(HttpServletRequest request,
HttpServletResponse response) {
Provider provider = getProvider(request.getAttribute("provider"));
String authUrl = provider.getAuthUrl();
page.put("authUrl", authUrl);
return new ModelAndView("setup","model",page);
}
提供者代码,我所有的依赖项都被注入(inject)
public String getAuthUrl()
{
oAuthParameters.setScope("http://docs.google.com/feeds/");
try {
oAuthHelper.getUnauthorizedRequestToken(oAuthParameters);
} catch (OAuthException e) {
page.put("authUrl", CANNOT_CONNECT_TO_GOOGLE);
}
String oAuth_Callback="[callback url]";
try {
oAuth_Callback.concat("?oauth_token_secret=").concat(
java.net.URLEncoder.encode
(oAuthParameters.getOAuthTokenSecret(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
page.put("authUrl",INTERNAL_ERROR);
}
oAuthParameters.setOAuthCallback(oAuth_Callback);
String authUrl = oAuthHelper.createUserAuthorizationUrl(oAuthParameters);
return authUrl;
}
最佳答案
听起来你有一个组件(一个 Controller )在做多项事情。
我会把它分成
后者应该被注入(inject)到您的 Controller 中,就像 Spring 中的其他所有内容一样。
这允许您在单元测试中模拟 OAuth 组件返回不同值时 Controller 的行为。
要实际测试与 Google 的集成,您可以做两件事:
因此,即使它们限制对某些域的访问,您也可以对难题的大部分部分进行单元测试,并且希望只有一小部分必须“在野外”进行测试。
或者,您可以为测试环境中的域注册不同的帐户吗?无论哪种方式,您仍然应该将此代码分解为更小的组件。
关于java - 如何对经过 oauth 的 Controller 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467627/
我是一名优秀的程序员,十分优秀!