mock如何为空_java – Mockito在使用@Mock时将Null值注入Spri...

由于我是Spring Test MVC的新手,我不明白这个问题.我从http://markchensblog.blogspot.in/search/label/Spring开始采用以下代码

变量mockproductService不是从Application Context注入的,它在使用@Mock注释和获取断言错误时包含空值.

我目前遇到的断言错误如下:

java.lang.AssertionError: Model attribute 'Products' expected: but was:

at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:60)

at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:89)

at org.springframework.test.web.servlet.result.ModelResultMatchers$2.match(ModelResultMatchers.java:68)

at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:141)

at com.pointel.spring.test.ProductControllerTest.testMethod(ProductControllerTest.java:84)

注意:如果我使用@Autowired而不是@Mock,它可以正常工作.

测试控制器类

RunWith(SpringJUnit4ClassRunner.class)

@WebAppConfiguration

@ContextConfiguration(locations={"classpath:mvc-dispatcher-servlet.xml"})

@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class})

public class ProductControllerTest {

@Autowired

private WebApplicationContext wac;

private MockMvc mockMvc;

@InjectMocks

private ProductController productController;

@Mock

//@Autowired

private ProductService mockproductService;

@Before

public void setup() {

MockitoAnnotations.initMocks(this);

List products = new ArrayList();

Product product1 = new Product();

product1.setId(new Long(1));

Product product2 = new Product();

product2.setId(new Long(2));

products.add(product1);

products.add(product2);

Mockito.when(mockproductService.findAllProducts()).thenReturn(products);

this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();

}

@Test

public void testMethod() throws Exception {

List products = new ArrayList();

Product product1 = new Product();

product1.setId(new Long(1));

Product product2 = new Product();

product2.setId(new Long(2));

products.add(product1);

products.add(product2);

RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/products");

this.mockMvc.perform(requestBuilder).

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

.andExpect(MockMvcResultMatchers.model().attribute("Products", products))

//.andExpect(MockMvcResultMatchers.model().size(2))

.andExpect(MockMvcResultMatchers.view().name("show_products"));

}

}

控制器类

@Controller

public class ProductController {

@Autowired

private ProductService productService;

@RequestMapping("/products")

public String testController(ModelMap model){

model.addAttribute("Products",productService.findAllProducts());

return "show_products";

}

}

WebServletContext mvc-dispatcher-servlet.xml


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部