【问题标题】:Mocking on the GAE development server?模拟 GAE 开发服务器?
【发布时间】:2010-09-20 08:27:41
【问题描述】:

我正在尝试在我的开发 GAE 服务器上模拟 HTTPServletRequest 数据。我正在运行 Eclipse 插件 1.3.7

我试过这样做:

package com.FOO.madservice.servlet.mock;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import static org.mockito.Mockito.*;

@SuppressWarnings("serial")
public class BAR2ServletMock extends HttpServlet {
    ...
    protected HttpServletRequest requestFilter(HttpServletRequest req) {
        HttpServletRequest servletRequest = spy(req);

        doReturn("gzip, deflate").when(servletRequest).getHeader("header-name-goes-here");
        doReturn("174.30.216.4").when(servletRequest).getRemoteAddr();

        return servletRequest;
    }
    ...
}

运行以下会出现异常:

java.lang.NoClassDefFoundError: sun.reflect.ReflectionFactory 是一个受限类。有关详细信息,请参阅 Google App Engine 开发人员指南。

关于如何在 GAE 开发服务器上进行列表检查或使用与 GAE 一起使用的不同模拟库时如何禁用类的任何想法?

谢谢, 马克西姆。

【问题讨论】:

    标签: java google-app-engine mocking


    【解决方案1】:

    我怀疑您能否在 GAE 上解决这个问题。

    GAE 符合 Java Servlet 标准,因此您可以通过安装标准 Java Servlet 容器(例如 Tomcat)来测试您的程序。

    另外,根据“模拟”的定义,对象模拟不需要反射吗? GAE 白名单是绝对强制执行的,您将无法绕过它。要在应用引擎上部署,无法使用全反射 API(但支持某些类)。

    【讨论】:

    • 我最终扩展了 HttpServletRequest 并覆盖了我想模拟的方法。适用于开发和 GAE。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多