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

测试spring mvc rest控制器

蓬琦
2023-03-14

我试图使用mockmvcbuilders.standalonesetup方法为一个spring mvc rest控制器创建一个非常基本的单元测试。我一直收到一个404错误。下面列出了测试应用程序上下文、测试类、控制器和整个堆栈跟踪。欢迎任何指导。

@Configuration
public class TestContext
{
    @Bean
    public Service service()
    {
        return mock(Service.class);
    }
}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={TestContext.class})
@WebAppConfiguration
public class TestUsingWebAppContextSetUp
{
    private MockMvc mockMvc;

    @Autowired
    private Service service;

    @Before
    public void setUp()
    {
        mockMvc = MockMvcBuilders.standaloneSetup(MyController.class)
                .build();
    }

    @Test
    public void test() throws Exception
    {
        mockMvc.perform(get("/search?phoneNumber=5551112222"))
            .andExpect(status().isOk())
            .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE));
    }
}

public class MyController
{
    @Autowired
    private Service service;

    @RequestMapping("/search")
    public List<SearchResult> search(@RequestParam(value="phoneNumber") String phoneNumber)
    {
        System.out.println("search called");
        Search search = new Search();
        search.setPhoneNumber(phoneNumber);
        return service.search(search);
    }
}

java.lang.AssertionError:状态应为:<200>但实际为:<404>在org.springframework.test.util.AssertionErrors.fail(AssertionErrors.AsserteQuals(AssertionErrors.java:60)在org.springframework.test.web.servlet.result.StatusResultMatchers$10)在org.springframework.test.web.servlet.mockMVC$1。在A:47)位于org.junit.internal.runners.statements.invokeMethod.evaluate(invokeMethod.Java:17)位于org.junit.internal.runners.statements.runbeFores.evaluate(runbeFores.Java:26)位于org.springframework.test.context.junit4.statements.runbeForestMethodCallbacks.evaluate(runbeFores.Java:73)位于.Java:288)在org.junit.runners.ParentRunner.Access$000(ParentRunner.Java:58)在org.junit.runners.ParentRunner$2。评估(ParentRunner.Java:268)在org.springframework.test.context.junit4.statements.runbeforestclasscallbacks。评估(Runbeforestclasscallbacks.Java:61)在org.springframework.test.context.junit4.statements.runaftertestclasscallbacks。评估(eStrunner.java:382),位于org.eclipse.jdt.internal.junit.runner.RemoteStrunner.main(RemoteStrunner.java:192)

共有1个答案

蒋鸿文
2023-03-14

mockmvcbuilders.standalonesetup的javadoc状态

通过注册一个或多个@controller的实例并以编程方式配置spring MVC基础架构,构建一个mockmvc。这允许完全控制控制器的实例化和初始化及其依赖关系,类似于普通单元测试,同时也允许一次测试一个控制器。

所以您可以将其用作

mockMvc = MockMvcBuilders.standaloneSetup(new MyController()).build();

注册实际实例。如果您需要它是一个spring托管实例(您可能考虑到它有一个@autowired字段),那么您必须从ApplicationContext获取它。

 类似资料:
  • 英文原文:http://emberjs.com/guides/testing/testing-controllers/ 单元测试方案和计算属性与之前单元测试基础中说明的相同,因为Ember.Controller集成自Ember.Object。 针对控制器的单元测试使用ember-qunit框架的moduleFor来做使这一切变得非常简单。 测试控制器操作 下面给出一个PostsController

  • /////////////////////个人控制器///////////////////////////////// ///////////////////个人/////////////////////////////////// ///////////////////PersondaoImpl/////////////////////////// /////////////人(模型)/////

  • spring-test模块对测试控制器@Controller提供了最原生的支持。详见14.6 "Spring MVC测试框架"一节。

  • 主要内容:用于控制流图的符号控制流测试是一种白盒测试下的测试技术。该技术的目的是通过控制结构确定语句或程序指令的执行顺序。程序的控制结构用于开发程序的测试用例。在该技术中,测试者选择大程序的特定部分来设置测试路径。它主要用于单元测试。测试用例由程序的控制图表示。 控制流图由节点,边缘,决策节点,结节点形成,以指定所有可能的执行路径。 用于控制流图的符号 节点 边缘 决策节点 连接节点 节点 控制流程图中的节点用于创建过程路径

  • 本文向大家介绍AngularJS 单元测试控制器,包括了AngularJS 单元测试控制器的使用技巧和注意事项,需要的朋友参考一下 示例 控制器代码: 考试: 跑!

  • 尝试用junit5和mockito测试我的web层(spring boot、spring mvc)。http方法的所有其他测试(get、put等)工作正常,但更新。遵循代码。 控制器: 服务: 最后,测试: 结果: CustomerService中的update(...)方法返回为null。无法理解方式。请建议。