我正在嘗試使用@WebMvcTest創建控制器測試,據我所知,當我將@WebMvcTest(ClientController.class)注釋放在測試類中時,它不應該創建很多bean,而只是這個控制器需要的bean .我正在使用@MockBean 模擬此控制器所需的 bean ,但不知何故,它失敗了,但有一個例外,即該控制器不需要但另一個服務的另一個服務的“沒有合格的 bean” 。所以這個測試失敗了:@RunWith(SpringRunner.class)@WebMvcTest(controllers = ClientController.class)public class ClientControllerTest { @MockBean ClientService clientService; @Test public void getClient() { assertEquals(1,1); }}我創建了一個相同版本(2.0.1)的空 Spring Boot 項目,并嘗試在那里創建測試。它工作得很好。所以我的問題可能是因為我的項目有很多依賴項,但也許在這種情況下有一些常見的做法?什么會弄亂@WebMvcTest邏輯?
1 回答

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
我找到了解決方法。不使用@WebMvcTest 和@MockBean,而是手動創建所有內容:
//@WebMvcTest(ClientController.class)
@RunWith(SpringRunner.class)
public class ClientControllerTest {
private MockMvc mockMvc;
@Mock
ClientService clientService;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(
new ClientController(clientService)
).build();
}
適用于 Spring 1.4.X 和 Spring Boot 2.X(那里和那里有不同的異常),但仍然沒有解釋為什么 @WebMvcTest 不起作用
添加回答
舉報
0/150
提交
取消