【发布时间】:2018-07-29 16:29:58
【问题描述】:
@RunWith(SpringRunner.class)
@WebAppConfiguration
Class Test{
@Autowired
public SomeBean someBean;
@Test
public void testAccountPage2() throws Exception {
SomeBean someBean = mock(SomeBean.class);
given(someBean.getAccount(anyString())).willReturn(getCustomer());
}
这里someBean.getAccount(anyString()) 不是在模拟,而是在调用该bean impl 的实际方法。似乎它正在使用 Autowired 对象而不是模拟对象。
谁能帮我在方法级别模拟 bean?这些 bean 也自动装配在同一个类或超类中。
谢谢
【问题讨论】:
-
那根本行不通。您只能在类级别模拟它们,以便 Spring Boot 将它们考虑在内。
-
如果我们尝试像这样模拟,那么在方法内部呢? SomeBean someBean = mock(SomeBean.class);行不行?
-
有什么不清楚的根本行不通。是的,您得到了一个模拟,没有 Spring Boot 对此一无所知,并且在内部它仍将使用正常的依赖项。这只适用于
@MockBean。
标签: spring-boot junit