繁体   English   中英

MockMVC不映射查询参数

MockMVC not mapping query parameters

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

当我使用POSTMAN测试REST API端点时,它工作正常。 这是控制台消息。

    path : -1
****** doFilter!!!!!!!!!!!!!!!!!!!
2018-11-15 10:52:56,949 DEBUG [com.isu.ifm.wrapper.RequestWrapper::<init>:85] URI : /ifm/Board.do
2018-11-15 10:52:56,949 DEBUG [com.isu.ifm.wrapper.RequestWrapper::<init>:86] METHOD : GET
2018-11-15 10:52:56,950 DEBUG [com.isu.ifm.wrapper.RequestWrapper::<init>:126] PARAM : comments : [a]
enterCd : [ISU_PS]
bbsCd : [10003]
bbsSeq : [1]
cmd : [saveCmt]
sabun : [91006]

preHandler ::::::::::::::http://localhost:8083/ifm/Board.do
ISU_PS
91006
preHandler ::::::::::::::/ifm/Board.do
[2018-11-15 10:52:56] [DEBUG]『org.apache.commons.dbcp.PoolingDataSource:getConnection(106)』 Elapsed Time [0:00:00.007]

    select
        1 
    from
        dual


[2018-11-15 10:52:56] [DEBUG]『org.springframework.jdbc.core.JdbcTemplate:execute(644)』 Elapsed Time [0:00:00.023]


                        INSERT INTO TSYS730(ENTER_CD, SABUN, BBS_SEQ, COMMENTS_SEQ, COMMENTS, CHKDATE, CHKID, BBS_CD)
                        VALUES( 'ISU_PS' /**PARAM*/,  '91006' /**PARAM*/,  '1' /**PARAM*/, BOARD_COMTSEQ.nextval,  'a' /**PARAM*/, sysdate,  '91006' /**PARAM*/,  '10003' /**PARAM*/)



Query Result[INSERT]: 1row

2018-11-15 10:52:56,984 DEBUG [com.isu.ifm.wrapper.ResponseWrapper::toByteArray:95] RETURN VALUE : {"message":"","map":{"comments":"a","enterCd":"ISU_PS","bbsCd":"10003","bbsSeq":"1","cmd":"saveCmt","sabun":"91006","ssnEnterCd":"ISU_PS","ssnSabun":"91006"},"code":1}

但是,当我尝试使用带有MockMVC的jUnit测试相同的端点时,它会获取参数,但无法在查询中进行映射。

ERROR [org.anyframe.query.QueryService::processException:1889] Query Service : Fail to [update [query id = 'saveCmt'], 

                            INSERT INTO TSYS730(ENTER_CD, SABUN, BBS_SEQ, COMMENTS_SEQ, COMMENTS, CHKDATE, CHKID, BBS_CD)
                            VALUES(:ssnEnterCd, :ssnSabun, :bbsSeq, BOARD_COMTSEQ.nextval, :comments, sysdate, :ssnSabun, :bbsCd)


            , PreparedStatementCallback; SQL [

                        INSERT INTO TSYS730(ENTER_CD, SABUN, BBS_SEQ, COMMENTS_SEQ, COMMENTS, CHKDATE, CHKID, BBS_CD)
                        VALUES(?, ?, ?, BOARD_COMTSEQ.nextval, ?, sysdate, ?, ?)


            ]; ORA-01400: cannot insert NULL in ("EHR_ISU4"."TSYS730"."ENTER_CD") 
; nested exception is java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL in ("EHR_ISU4"."TSYS730"."ENTER_CD") 
].
 Query = [org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [

                        INSERT INTO TSYS730(ENTER_CD, SABUN, BBS_SEQ, COMMENTS_SEQ, COMMENTS, CHKDATE, CHKID, BBS_CD)
                        VALUES(?, ?, ?, BOARD_COMTSEQ.nextval, ?, sysdate, ?, ?)


            ]; ORA-01400: cannot insert NULL in ("EHR_ISU4"."TSYS730"."ENTER_CD") 
; nested exception is java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL in ("EHR_ISU4"."TSYS730"."ENTER_CD")
] 
 Reason = [{}].

MockHttpServletRequest:
         HTTP Method = GET
         Request URI = /Board.do
          Parameters = {cmd=[saveCmt], enterCd=[ISU_PS], sabun=[91006], bbsCd=[10001], bbsSeq=[1], comments=[a]}
             Headers = {}

             Handler:
                Type = com.isu.ifm.controller.BoardController
              Method = public org.springframework.web.servlet.ModelAndView com.isu.ifm.controller.BoardController.saveCmt(javax.servlet.http.HttpSession,javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.Object>) throws java.lang.Exception

               Async:
       Async started = false
        Async result = null

  Resolved Exception:
                Type = null

        ModelAndView:
           View name = jsonView
                View = null
           Attribute = code
               value = -1
           Attribute = message
               value = fail
           Attribute = map
               value = {cmd=saveCmt, enterCd=ISU_PS, sabun=91006, bbsCd=10001, bbsSeq=1, comments=a, ssnEnterCd=null, ssnSabun=null}

            FlashMap:

MockHttpServletResponse:
              Status = 200
       Error message = null
             Headers = {}
        Content type = null
                Body = 
       Forwarded URL = jsonView
      Redirected URL = null
             Cookies = []
2018-11-15 10:49:19,788  INFO [org.springframework.context.support.GenericApplicationContext::doClose:862] Closing org.springframework.context.support.GenericApplicationContext@9660f4e: startup date [Thu Nov 15 10:49:14 KST 2018]; root of context hierarchy

这是我的测试用例代码。

    public MockMvc mockMvc;

public void testGetMethod_param(String url, UnaryOperator<MockHttpServletRequestBuilder> operator)
            throws Exception {
        mockMvc.perform(operator.apply(get(url))).andDo(print()).andExpect(status().isOk());
    }




 @ContextConfiguration("file:src/main/webapp/WEB-INF/**/*.xml")
public class BoardControllerTest extends HttpRequestTestMethod implements CoreParameters, AdapterServiceParameters{

    @Autowired
    public BoardController boardController;


    @Before
    public void setUp() throws Exception {
        mockMvc = MockMvcBuilders.standaloneSetup(boardController).build();
    }
    @Test
    public void savecmt() throws Exception {
        testGetMethod_param("/Board.do", builder->builder
                .param("cmd", "saveCmt")
                .param("enterCd", enterCd)
                .param("sabun", sabun)
                .param("bbsCd", bbsCd)
                .param("bbsSeq", bbsSeq)
                .param("comments", comments));
    }

如果我故意将enterCd设置为NULL,则会收到以下消息。

[2018-11-15 11:06:02] [ERROR]『oracle.jdbc.driver.T4CTTIoer:processError(439)』
java.sql.SQLIntegrityConstraintViolationException


                        INSERT INTO TSYS730(ENTER_CD, SABUN, BBS_SEQ, COMMENTS_SEQ, COMMENTS, CHKDATE, CHKID, BBS_CD)
                        VALUES( null /**PARAM*/,  '91006' /**PARAM*/,  '1' /**PARAM*/, BOARD_COMTSEQ.nextval,  'a' /**PARAM*/, sysdate,  '91006' /**PARAM*/,  '10003' /**PARAM*/)



ORA-01400: cannot insert Null in ("EHR_ISU4"."TSYS730"."ENTER_CD")

但是如上所述,使用jUnit时,所有参数都设置为“?”。

Query = [org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [

                        INSERT INTO TSYS730(ENTER_CD, SABUN, BBS_SEQ, COMMENTS_SEQ, COMMENTS, CHKDATE, CHKID, BBS_CD)
                        VALUES(?, ?, ?, BOARD_COMTSEQ.nextval, ?, sysdate, ?, ?)


            ]; ORA-01400: cannot insert Null in ("EHR_ISU4"."TSYS730"."ENTER_CD") 
; nested exception is java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert Null in ("EHR_ISU4"."TSYS730"."ENTER_CD") 
] 

谁能告诉我这是怎么回事? 任何帮助将不胜感激。

问题暂未有回复.您可以查看右边的相关问题.
2 没有使用 mockmvc 的请求映射

当我使用以下控制器/测试配置收到“请求的映射错误”时,目前正在努力解决问题。 控制器: 测试: 配置: 测试执行后,我得到POST /subscriber/session 没有映射 挣扎的原因是我来自具有相同配置的其他模块的代码工作正常。 有人可以指出我错过了什么吗? 提前致谢! ...

3 URL已映射,但MockMvc找不到映射

我发现了几个类似的问题,但没有一个有帮助。 我正在尝试根据本文编写集成测试。 看起来上下文配置正确,URL已映射: 2017-11-20 11:14:58 INFO主RequestMappingHandlerMapping:537-将“ {[/ || / index],方法= ...

4 查询参数未映射

我有一个REST端点,如下所示。 如您在上面看到的,我正在使用@BeanParam映射从前端传递的查询参数。 ConsumerQueryParams类如下所示。 您可以看到我正在使用Builder模式来设置变量。 我正在使用下面的URL访问上面指定的端点。 一切正 ...

5 Restsharp:自动映射查询参数

我有一个 Endpoints.cs 类,它包含我与 REST 服务器一起使用的所有 GET 和 POST 端点。 我在 APIHelper 类中创建了一个通用的 GET 方法: 现在,我的一些端点包含查询参数。 如何修改该方法,使其自动读取 qArgs 并将它们应用到具有 .AddUrlSeg ...

6 使用参数映射 SQL 查询的结果

我想将这个 ruby​​ 逻辑实现到 Java 代码中: 我有一个 SQL 查询的结果,它是一个带有对象的列表: List&lt;Connections&gt; : 如何获取前 10 个列表元素并通过字段serial_number它们分组? ...

2019-11-17 18:22:08 3 62   java
7 碧玉查询中的参数映射

这是我在jasper.jrxml中的查询: 如何在此查询中添加参数并在需要时调用它? 编辑: 这是我声明参数但jasper看不到的地方: ...

8 Swagger:查询参数的映射数组

首先,我的问题类似于: 如何快速地传递多值查询参数,但这仍然不能解决我的问题。 我的查询可以包含一个参数数组,例如: 在流派方面,它可以有许多参数。 它们被视为数组,因此: 使用当前的swagger.yaml配置,我只能看到一个查询输入,因此用户只能搜索一种类型,而不是她/他想要的数量,但 ...

9 在MockMvc测试中发送通配符参数

每个人,我正在使用sping rest docs libray,我必须向一些模拟方法发送一个通配符参数,我正在做下一个: 但我想发送一个通配符参数,因为我在测试中得到null,因为它们是不同的对象,我知道wuth spock我们可以做类似的事情: 我们可以使用_通配符参数。 但 ...

10 使用 MockMVC 缺少参数的单元测试

我有这个初始方法,但我很迷茫,并试图弄清楚应该given参数。 我不断收到 404 而不是 201 的响应代码。对此任何帮助或见解将不胜感激! 在当前代码中,给定的行仍然有错误,因为它不完整。 作为参考,这里是正在使用的类。 服务 generateHtmlSummaryReport() ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM