首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

模拟Mvc单元测试抛出Http 406

是指在进行Mvc单元测试时,模拟一个请求,然后验证返回的Http状态码是否为406。Http 406状态码表示请求的资源只能生成特定内容类型的响应,而请求的内容类型不符合服务器的要求。

在进行这样的单元测试时,可以使用各种单元测试框架和工具,如JUnit、TestNG、Mockito等。以下是一个可能的解决方案:

  1. 首先,需要创建一个模拟的Mvc请求,并设置请求的内容类型为不符合服务器要求的类型。可以使用MockMvc来模拟请求,例如使用Spring MVC的MockMvc框架。
  2. 接下来,执行模拟的Mvc请求,并获取返回的响应对象。
  3. 验证返回的Http状态码是否为406。可以使用断言来验证,例如使用JUnit的断言方法assertEquals()。
  4. 如果返回的Http状态码确实为406,则说明单元测试通过。如果不是406,则说明单元测试失败。

下面是一个示例代码片段,使用Java和Spring MVC进行模拟Mvc单元测试抛出Http 406的示例:

代码语言:txt
复制
import org.junit.Test;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

public class MyControllerTest {

    @Test
    public void testMyMethod() throws Exception {
        MyController myController = new MyController();
        MockMvc mockMvc = MockMvcBuilders.standaloneSetup(myController).build();

        mockMvc.perform(MockMvcRequestBuilders.get("/my-url")
                .contentType(MediaType.APPLICATION_JSON)) // 设置请求的内容类型为不符合服务器要求的类型
                .andExpect(MockMvcResultMatchers.status().isNotAcceptable()); // 验证返回的Http状态码是否为406
    }
}

在这个示例中,我们创建了一个名为MyController的控制器,并在其中定义了一个名为myMethod()的方法。我们使用MockMvc来模拟请求,并设置请求的内容类型为不符合服务器要求的类型。然后,我们验证返回的Http状态码是否为406。

对于这个问题,腾讯云提供了一系列云计算相关的产品和服务,例如云服务器、云数据库、云存储等。具体推荐的产品和产品介绍链接地址可以根据实际需求和场景来选择,可以参考腾讯云官方文档或咨询腾讯云的技术支持团队。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Spring Boot的单元测试(概念)

    Spring Boot的单元测试 一、前言 二、Spring Boot单元测试程序模板 三、测试Service 四、测试Controller 五、模拟Controller请求 六、比较Controller...的调用,Controller测试是一张模拟测试,实际上并未发起一次真正的HTTP请求;get方法模拟了一次Get请求,请求地址为/getCredit/{id},这里的{id}被其后的参数uid代替,因此请求路径是...另外,还需要注意的是,MockMvc用来在Servlet容器内对Controller进行单元测试,并未真正发起了HTTP请求调用Controller。...类可以通过调用MockMvcRequestBuilders的get、post、multipart等方法来模拟Controller请求,常用示例如下: 模拟一个get请求: mvc.peform(get...("/getCredit/{id}", uid)); 模拟一个post请求: mvc.peform(post("/getCredit/{id}", uid)); 模拟文件上传: mvc.peform(multipart

    1.6K30

    Junit 实例精讲基础教程(三) 使用@Test(timeout=5000)模拟超时进行单元测试

    实际开发中,尤其是系统间的调用时,经常需要检测接口调用的时间,单元测试时,亦需要模拟超时场景。...如果一个单元测试正在花费超过一个定义的“超时”来完成,一个TestTimedOutException将会抛出单元测试会认为失败。这里分享使用Junit进行单元测试时如何模拟超时场景。...单个方法模拟超时的例子 首先展示一个只能对一个方法进行超时模拟的场景,超时时间单位是毫秒。...package org.byron4j.spring_mvc_log4j.mock.timeout; import org.junit.Test; public class TestTimeoutCase1...5秒,超过5秒认为失败,执行单元测试,结果如下: 全部方法模拟超时的例子 使用@Test和timeout属性只能针对单一方法起作用,现在我们使用@Rule和Timeout、TimeUnit来进行超时规则配置

    70210

    大型企业通常如何进行单元测试

    ,最好也进行模拟。...异常情况包括: 外部异常:依赖(内部或外部接口、数据库环境等)抛出异常将如何处理;内部异常:代码本身抛出RuntimeException的后果。...同时,Spock不仅局限于模拟(Mock),还提供各种高效的功能(这些是传统JUnit和Mockito无法实现的):Spy:可以对部分资源进行模拟,方便地对同一类内相互调用的方法进行模拟和验证。...Mock:对依赖资源进行模拟,同时验证依赖资源被调用的次数。例如,测试Redis写功能时,可以模拟Redis客户端,验证传入方法的参数是否符合预期,以及验证Redis写入方法被调用的次数。...可以方便地验证抛出的异常。与Spring集成方便:可以进行Spring框架的集成测试,包括对Spring MVC、Spring Boot的HTTP接口层进行单元测试,无需启动Web容器。

    8800

    ContentNegotiation内容协商机制(一)---Spring MVC内置支持的4种内容协商方式【享学Spring MVC

    HTTP内容协商 虽然本文主要是想说Spring MVC中的内容协商机制,但是在此之前是很有必要先了解HTTP的内容协商是怎么回事(Spring MVC实现了它并且扩展了它更为强大~)。...关于更多Http中的Content-Type的内容,我推荐参见此文章:Http请求中的Content-Type ---- Spring MVC内容协商 Spring MVC实现了HTTP内容协商的同时,...现在你应该知道,这样做显然是没用的(至于为何没用,希望读者做到了心知肚明),只能使用Accept这个头来指定~~~ 第一种协商方式是Spring MVC完全基于HTTP Accept首部的方式了。...例如本利这里指定了json格式,如果你这么访问/test/1.xml,或者format=xml,或者Accept不是application/json或者*/* 将无法完成内容协商:http状态码为406...produces使用固然也比较简单,针对上面报错406的原因,我简单解释如下。

    2K20

    文件上传的单元测试怎么写?

    早上有个群友问了一个不错的问题:文件上传的单元测试怎么写?后面也针对后端开发要不要学一下单元测试的话题聊了聊,个人是非常建议后端开发能够学一下单元测试的。...看看我们入门例子中的单元测试: @SpringBootTest public class Chapter11ApplicationTests {     private MockMvc mvc;     ...                .andExpect(content().string(equalTo("Hello World")));     } } 这里我们所用到的核心是MockMvc工具,通过模拟...http请求的提交并指定相关的期望返回来完成。...对于文件上传接口,本质上还是http请求的处理,所以MockMvc依然逃不掉,就是上传内容发生了改变,我们只需要去找一下文件上传的模拟对象是哪个,就可以轻松完成这个任务。

    1.7K10

    Spring6如此厉害的框架到底包含哪些内容

    TESTING 测试:Spring 框架提供了丰富的测试支持,包括单元测试、集成测试、模拟对象、测试数据准备等功能。...TESTING 测试:Mock Objects:Spring 允许创建和使用模拟对象(Mock Objects),这些对象可以替代真实的对象进行单元测试,以便更容易地隔离被测试的组件。...Spring MVC Test:Spring MVC Test 提供了对 Spring MVC 应用程序进行集成测试的支持,可以模拟 HTTP 请求和响应,验证控制器的行为和视图的渲染结果。...Web Servet:Spring MVC:Spring MVC 是 Spring 框架中的 Web 模块,提供了基于模型-视图-控制器(MVC)设计模式的 Web 应用程序开发支持,用于构建灵活、可扩展的...WebClient:Spring WebClient 是一个非阻塞的、异步的 HTTP 客户端,用于在 WebFlux 应用程序中进行远程服务调用,支持响应式流处理和各种协议。

    13110

    快速学会Springboot中编写Mock单元测试

    java开发者开发接口往往忽视接口单元测试。作为java开发如果会Mock单元测试,那么你的bug量将会大大降低。...Mockito: 知名 Java mock 模拟框架. JSONassert: JSON断言库. JsonPath: JSON XPath 操作类库. 以上都是在单元测试中经常接触的类库。...我们在Spring Boot maven项目的单元测试包test下对应的类路径 编写自己的测试类 ? 前两个注解不用说,第三个注解可能你们很陌生。这个是用来开启Mock Mvc测试的自动化配置的。...一旦请求不通过将抛出java.lang.AssertionError错误, 会把期望值(Expected)跟实际值打印出来(下图2标识)。如果跟预期相同只会出现下图1。 ?...这里我们会用到Mockito 测试场景描述如下: 指定打桩对象的返回值 判断某个打桩对象的某个方法被调用及调用的次数 指定打桩对象抛出某个特定异常 一般有以下几种组合: do/when:包括doThrow

    6.9K10

    单元测试指南

    它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。...WireMock: 模拟您的API以进行快速、可靠和全面的测试。WireMock是一个基于 HTTP 的 API 的模拟器。有些人可能认为它是一个服务虚拟化工具或模拟服务器。...对 Spring MVC 的测试 为了测试 web 项目,需要一些 Servlet 相关的模拟对象,比如:MockMVC/MockHttpServletRequest/MockHttpServletResponse...wac; // 注入WebApplicationContext @Autowired MockHttpSession session; // 注入模拟http session...(3). web模块的单元测试 要测试 Spring MVC 控制器是否按预期工作,请使用@WebMvcTest注释。

    6.2K20

    Junit 实例精讲基础教程(二) 使用@Test+expected、@Rule+ExpectedException模拟方法异常执行的方式

    在实际业务中,进行单元测试时,我们除了需要测试正常流程和正确的程序功能之外,可能还需要测试异常场景,在Junit中该如何模拟异常场景呢? 在Junit中,通常有3种方式去模拟生产中的异常场景。...使用@Test和其属性expected Exception1Test.java: package org.byron4j.spring_mvc_log4j.mock; import java.util.ArrayList...ArithmeticException.class) public void testDivisionWithException() { int i = 1 / 0; } /** * 运行时抛出一个...cust.findByName(""); } } 自定义的异常类NameNotFoundException.java: package org.byron4j.spring_mvc_log4j.mock...errCode) { this.errCode = errCode; } } CustomerService.java: package org.byron4j.spring_mvc_log4j.mock

    41910
    领券