Mokito 无法模拟方法并且断言总是失败

我无法模拟我的 getUserCards 返回空列表。它总是从数据库中获取信息。你有什么想法?我附上我的 get 请求和 mockito 实现。我想设置 getUserCards 方法总是返回一个空列表,但我不能被嘲笑


@Before

public void setUp() throws Exception{

    //cards.add(new Card());

    CardService mock = Mockito.mock(CardService.class);

    Mockito.when(mock.getUserCards("1234"))

            .thenReturn(cards);

}


@Test

public void testMockCards() throws Exception{

    mockMvc = MockMvcBuilders.standaloneSetup(cardController).build();

    MockHttpServletResponse response = mockMvc.perform(

            MockMvcRequestBuilders.get("/cards")

    )

            .andDo(MockMvcResultHandlers.print())

            .andExpect(MockMvcResultMatchers.status().isOk())

            .andReturn().getResponse();

    ObjectMapper mapper = new ObjectMapper();

    List<Card> cardResponse = mapper.readValue(response.getContentAsString(),

        new TypeReference<List<Card>>(){});

    Assert.assertEquals(cards, cardResponse);

}

得到


@RequestMapping(value = "/cards", method = RequestMethod.GET)

@JsonView(Views.Public.class)

public List<Card> getUserCards(


{

  session.getEntityUserId());

}


aluckdog
浏览 112回答 1
1回答

当年话下

您必须将模拟注入控制器,否则您的控制器将使用配置中的 spring bean。您可以将模拟传递给 Controller 构造函数或阅读 @InjectMocks/@MockBean 注释。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java