SpringBoot Mock測試

今天用Mock測試Controller的時候,剛開始發現Controller裏面的Service沒有被實例化,也就是沒有注入bean。

原先的測試代碼,我沒有通過AutoWired註解注入repaymentScheduleController,而是直接在setup裏面new了一個Controller。


正常運行後的代碼:

package com.creditease.microloan.mil.loanrepay;

import com.creditease.microloan.mil.loanrepay.controller.RepaymentScheduleController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class MicroloanMilLoanRepayApplicationTests {
/* 測試service
	@Autowired
	private RepaymentCalculateService repaymentCalculateService;

	@Test
	public void test2(){
		List<RepayTermBO> list = repaymentCalculateService.getRepayTerm(50, Timestamp.valueOf("2017-05-22 00:00:00"),1,10);
		Assert.assertNotNull(list);
	}
	@Test
	public void test3(){
		List<RepayTermBO> list = repaymentCalculateService.getRepayTerm(50, Timestamp.valueOf("2017-05-22 00:00:00"),1,10);
		Assert.assertNotNull(list);
	}*/

    //測試Controller接口
	@Autowired
	private RepaymentScheduleController repaymentScheduleController;

	private MockMvc mockMvc;

	@Before
	public void setup(){
		mockMvc = MockMvcBuilders.standaloneSetup(repaymentScheduleController).build();
	}
	//驗證controller是否正常響應並打印返回結果
	@Test
	public void getHello() throws Exception {
		MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/loanrepay/repaymentSchedule/repayTerm").accept(MediaType.APPLICATION_JSON)
				.param("dayNum","8")
				.param("date","2017-7-18 00:00:00")
				.param("pageNum","1")
				.param("pageSize","10"))
				.andExpect(MockMvcResultMatchers.status().isOk())
				.andDo(MockMvcResultHandlers.print())
				.andReturn();
		System.out.println("輸出 " + mvcResult.getResponse().getContentAsString());
	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章