【问题标题】:Unable to mock functions in when running mockmvc test运行 mockmvc 测试时无法模拟函数
【发布时间】:2020-02-21 13:26:10
【问题描述】:

我正在使用 mockmvc 编写我的控制器的测试用例

@Mock
private AService aService;

@InjectMocks
private AController aController;



@BeforeEach
    public void init() {
        MockitoAnnotations.initMocks(this);
        mockMvc = MockMvcBuilders
                .standaloneSetup(aController)
                .setCustomArgumentResolvers(putAuthenticationPrincipal)  // for passing the authentication principal
                .build();
    }

现在当我尝试测试时

@Test
    public void testfunction() throws Exception {
        String id = UUID.randomUUID().toString();
  Mockito.when(aService.getAccount(Mockito.anyString())).thenThrow(new Exception("not avalible"));
        mockMvc.perform(MockMvcRequestBuilders.get("/account/{id}", id)
....      
   }

在此 aService.getAccount() 没有得到模拟。这就是为什么我没有得到想要的结果..

我不明白为什么在这种情况下模拟函数不起作用。

【问题讨论】:

    标签: mockito mockmvc


    【解决方案1】:

    @WebMvcTest 中,您不应创建控制器的模拟。 Spring 需要在其上下文中创建一个控制器,并将协作服务注入其中。

    这样做:

    • @WebMvcTest(YourController.class)注释测试类
    • @MockBean而不是@Mock注释协作服务

    【讨论】:

      猜你喜欢
      • 2019-12-16
      • 2021-08-22
      • 2020-11-04
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2016-12-09
      相关资源
      最近更新 更多