是否可以用Fiddler观察MockMvc测试?

时间:2016-01-05 11:42:37

标签: java spring fiddler spring-test-mvc mockmvc

我正在使用

测试我的网络应用
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyApp.class)
//@WebAppConfiguration
@WebIntegrationTest
public class MyTest {

   private MockMvc mockMvc;

   @Autowired
   private WebApplicationContext webApplicationContext;

}

@Before
public void setup() throws Exception {
   this.mockMvc = webAppContextSetup(webApplicationContext)
       .apply(springSecurity())
       .build();
}

@Test
public void someTest() throws Exception {
 result = mockMvc.perform(get("/user/"));

      result
         .andExpect(status().isOk())
         .andExpect(content().contentType(contentType))
    ...
}

是否可以观察使用Filler进行测试的方式?或者它没有网络发送?是否可以强制MockMvc使用网络?

目前我在Fiddler看不到任何内容。

的设定
  System.getProperties().put("http.proxyHost", "127.0.0.1");
  System.getProperties().put("http.proxyPort", "8888");

没有帮助。

1 个答案:

答案 0 :(得分:0)

简单地说,你不能使用HTTP代理,因为

  

[...]您只通过DispatcherServlet测试Web层   但是使用实际的Spring配置,就像你可能会测试一样   数据访问层与上面的层隔离。

     

[...]此类测试位于服务器端内部,因此您可以检查使用了哪个处理程序,如果使用HandlerExceptionResolver处理异常,   模型的内容是什么,有什么绑定错误,等等。   这意味着编写期望更容易,因为服务器不是   通过实际的HTTP客户端测试它时的黑盒子。

(见docs

如果您确实想要使用HTTP代理检查回复,则需要使用RestTemplate(请参阅docs):

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(MyApp.class)
@WebIntegrationTest("server.port:9000")
public class MyTest {

    private static RestTemplate restTemplate = new TestRestTemplate();

    @BeforeClass
    public static void setup() {
        // configure proxy host and port here
        restTemplate = new TestRestTemplate();
    }

    @Test
    public void test() {
        restTemplate.get(URI.create("http://localhost:9000/your-app", Object.class);
    }    
}