为什么MockMVC和Mockito不能一起使用?

士兰

我拥有宁静的服务,并且我想在不连接数据库的情况下对它们进行单元测试,因此,我编写了以下代码:

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

    adminDao = mock(AdminDaoImpl.class);
    adminService = new AdminServiceImpl(adminDao);
}

@Test
public void getUserList_test() throws Exception {
    User user = getTestUser();
    List<User> expected = spy(Lists.newArrayList(user));

    when(adminDao.selectUserList()).thenReturn(expected);


    mockMvc.perform(get("/admin/user"))
        .andExpect(status().isOk())
        .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
        .andExpect(jsonPath("$", hasSize(1)))
        ;           
}

服务被调用,但是我的问题是这行代码

when(adminDao.selectUserList()).thenReturn(expected);

无法正常工作,我的意思是它确实调用了adminDao.select方法,因此从数据库中获取结果。我不要 您知道如何模拟方法调用吗?

士兰

感谢@M。Deinum,我解决了我的问题,添加了一个TestContext配置文件:

@Configuration
public class TestContext {

@Bean
public AdminDaoImpl adminDao() {
    return Mockito.mock(AdminDaoImpl.class);
}

@Bean
public AdminServiceImpl adminService() {
    return new AdminServiceImpl(adminDao());
}       
}

然后在我的测试课中,我用

@ContextConfiguration(classes = {TestContext.class})

值得一提的是在测试类的setUp中,我需要重设嘲笑的类以防止泄漏:

@Before
public void setup() throws Exception {
    Mockito.reset(adminDaoMock);

    mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么filter和rowSums不能一起使用?

来自分类Dev

SFINAE和衰变不能一起使用。为什么?

来自分类Dev

为什么HMR和chunkhash不能一起使用?

来自分类Dev

为什么选择范围和弹出窗口不能在javascript中一起使用?

来自分类Dev

为什么不能将@PostConstruct和@Retryable一起使用?

来自分类Dev

为什么Bootstrap行和列不能与车把一起使用?

来自分类Dev

为什么inline-block和max-width不能一起使用?

来自分类Dev

为什么不能将字段与getField()和setField()一起使用?

来自分类Dev

为什么这个数组和 foreach 不能与 mysqli 一起使用?

来自分类Dev

LibreOffice为什么不能与HUD一起使用?

来自分类Dev

为什么模拟不能与AsyncTask一起使用?

来自分类Dev

为什么kubernetes不能直接与容器一起使用

来自分类Dev

为什么kubernetes不能直接与容器一起使用

来自分类Dev

为什么kubernetes不能直接与容器一起使用

来自分类Dev

LibreOffice为什么不能与HUD一起使用?

来自分类Dev

为什么childElementCount不能与jQuery一起使用?

来自分类Dev

为什么javascript“ this”不能与“ each”一起使用?

来自分类Dev

setuid为什么不能与mount一起使用?

来自分类Dev

为什么JQuery不能与CryptoJS一起使用?

来自分类Dev

为什么 grep 不能与 iostat 一起使用?

来自分类Dev

为什么 foreach 不能与 String 一起使用?

来自分类Dev

为什么Quickbooks可以与Ubuntu一起使用,而不能与Fedora一起使用?

来自分类Dev

为什么它可以与$ scope一起使用,但不能与`this`一起使用?

来自分类Dev

为什么此脚本不能与nohup一起使用,但是不能,不能呢?

来自分类Dev

为什么此脚本不能与nohup一起使用,但是不能,不能呢?

来自分类Dev

为什么AOP和DI很少一起使用

来自分类Dev

为什么不将向量和列表一起使用?

来自分类Dev

为什么 HHVM 和 NGINX 一起使用?

来自分类Dev

为什么我不能将最新版本的NUnit和FsCheck与F#一起使用?

Related 相关文章

  1. 1

    为什么filter和rowSums不能一起使用?

  2. 2

    SFINAE和衰变不能一起使用。为什么?

  3. 3

    为什么HMR和chunkhash不能一起使用?

  4. 4

    为什么选择范围和弹出窗口不能在javascript中一起使用?

  5. 5

    为什么不能将@PostConstruct和@Retryable一起使用?

  6. 6

    为什么Bootstrap行和列不能与车把一起使用?

  7. 7

    为什么inline-block和max-width不能一起使用?

  8. 8

    为什么不能将字段与getField()和setField()一起使用?

  9. 9

    为什么这个数组和 foreach 不能与 mysqli 一起使用?

  10. 10

    LibreOffice为什么不能与HUD一起使用?

  11. 11

    为什么模拟不能与AsyncTask一起使用?

  12. 12

    为什么kubernetes不能直接与容器一起使用

  13. 13

    为什么kubernetes不能直接与容器一起使用

  14. 14

    为什么kubernetes不能直接与容器一起使用

  15. 15

    LibreOffice为什么不能与HUD一起使用?

  16. 16

    为什么childElementCount不能与jQuery一起使用?

  17. 17

    为什么javascript“ this”不能与“ each”一起使用?

  18. 18

    setuid为什么不能与mount一起使用?

  19. 19

    为什么JQuery不能与CryptoJS一起使用?

  20. 20

    为什么 grep 不能与 iostat 一起使用?

  21. 21

    为什么 foreach 不能与 String 一起使用?

  22. 22

    为什么Quickbooks可以与Ubuntu一起使用,而不能与Fedora一起使用?

  23. 23

    为什么它可以与$ scope一起使用,但不能与`this`一起使用?

  24. 24

    为什么此脚本不能与nohup一起使用,但是不能,不能呢?

  25. 25

    为什么此脚本不能与nohup一起使用,但是不能,不能呢?

  26. 26

    为什么AOP和DI很少一起使用

  27. 27

    为什么不将向量和列表一起使用?

  28. 28

    为什么 HHVM 和 NGINX 一起使用?

  29. 29

    为什么我不能将最新版本的NUnit和FsCheck与F#一起使用?

热门标签

归档