当前位置: 首页 > 知识库问答 >
问题:

如何在服务测试类中模拟@AutoWired HttpServletRequest?

陈淳
2023-03-14

在我的服务类中,我有@Autowired HttpServletRequest,并且在我的服务方法中使用相同的对象,但是对于那个服务方法测试类,我不能在我的测试方法中模拟HttpServletRequest对象,请检查下面的代码。我正在获取请求对象的空指针异常

    @Component("someServiceClass")
    public class SomeServiceClassImpl implements SomeServiceClass {

        @Autowired
        private HttpServletRequest request;

        @Autowired
        private HttpServletResponse response;

        @Override
        public void method(String id) {
            String param = request.getParameter("param");
// Here i am getting request object as null
        }

    }
    public class SomeServiceClassImplTest {

        @Mock
        private HttpServletRequest request;

        @Mock
        private HttpServletResponse response;

        @InjectMocks
        private SomeServiceClassImpl someServiceClass;

        @Before
        public void setup() {
            MockitoAnnotations.initMocks(this);
        }

        @Test
        public void methodTest() {
            Mockito.when(request.getParameter(Mockito.any())).thenReturn("dm");

        }

    }

共有1个答案

宗政燕七
2023-03-14

是否正在调用setup()方法

难道不应该添加一个@runwith注释来指定一个将执行标记为@before的方法的运行程序吗?

例如,您可以用@runwith(MockitoJUnitRunner.class)标记类

 类似资料:
  • 问题内容: 我正在尝试测试AngularJS服务,但似乎不起作用。 谁能解释为什么响应为空? 问题答案: 试试这个: 请求返回的响应对象在属性(docs)中具有响应数据。

  • 我有一个Spring 3.2 MVC应用程序,正在使用Spring MVC测试框架测试控制器动作的GET和POST请求。我使用Mockito来模拟服务,但我发现模拟被忽略了,我的实际服务层被使用了(因此,数据库被击中)。 控制器测试中的代码: 你会注意到我有两个上下文配置文件;这是一种黑客行为,因为如果我无法阻止控制器测试命中实际的服务层,那么该服务层的存储库也可能指向测试数据库。我再也不能忍受这

  • 我还尝试将模拟转换为文档,如下所示 但这会在代码实现内部访问MongoCollection时产生NullpointerException异常。 这两个我都试过了 null 我厌倦了用java编写相同的测试,并在其中进行泛型的转换。 有人在Kotlin有嘲弄泛型类的经验吗?

  • 我正在尝试对服务方法进行单元测试。服务方法调用spring数据存储库方法来获取一些数据。我想模拟这个存储库调用,并自己提供数据。如何做到这一点?在Spring Boot文档之后,当我模拟存储库并在测试代码中直接调用存储库方法时,模拟工作正常。但是,当我调用服务方法时,反过来调用存储库方法,mocking就不起作用了。下面是示例代码: 服务级别: 测试等级:

  • 我想为我的Codename One应用程序编写功能测试。 为此,我需要能够模拟一些服务器响应,以便它们准确地返回我需要的特定测试。 我试图让发送HTTP请求的函数将ConnectionRequest作为参数,这样我可以注入一些东西来模拟网络延迟,然后用模拟响应调用回调。 然而,当我尝试在单元测试的prepare方法中注入ConnectionRequest的模拟时,它们仍然在应用程序启动后被注入,这