[英]Mockbean containing autowired dependency
我正在测试一个对bean有依赖性的类。 在测试中,我模拟了bean,但是模拟的bean也具有它自己的@Autowired
依赖项。 无论如何,我是否可以满足这种依赖性? 现在,当调用模拟中的方法时,@ @Autowired
依赖项为null 。
例:
public class testclass {
@Autowired
private ClassToTest classToTest;
@MockBean
private DependencyOfClassToTest dependencyOfClassToTest;
@Mockbean
private MyOwnDependencyINeedHereInTheMock myOwnDependencyINeedHereInTheMock;
}
public class DependencyOfClassToTest {
@Autowired
private MyOwnDependencyINeedHereInTheMock myOwnDependencyINeedHereInTheMock;
}
如上所示,模拟的bean包含一个@Autowired
依赖项。
有什么解决办法还是我违反某种测试规则?
调用模拟 bean中的实际方法时,它会调用myOwnDependencyINeedHereInTheMock ,因为它是模拟bean,所以将为null。
尽管MockBean在@Autowired
类中不为null ,所以它们可以由Spring Boot找到。
也嘲笑那个豆子!
public class testclass {
@Autowired
private ClassToTest classToTest;
@MockBean
private DependencyOfClassToTest dependencyOfClassToTest;
@MockBean
private MyOwnDependencyINeedHereInTheMock myOwnDependencyINeedHereInTheMock;
}
public class DependencyOfClassToTest {
@Autowired
private MyOwnDependencyINeedHereInTheMock myOwnDependencyINeedHereInTheMock;
}
更新 :下面的测试课对我有用
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
@Autowired
private ClassToTest classToTest;
@MockBean
private DependencyOfClassToTest dependencyOfClassToTest;
@MockBean
private MyOwnDependencyINeedHereInTheMock myOwnDependencyINeedHereInTheMock;
@Test
public void contextLoads() {
System.out.println("test"+myOwnDependencyINeedHereInTheMock);
}
@TestConfiguration
static class Context{
@Component
static class ClassToTest{
@Autowired
private DependencyOfClassToTest dependencyOfClassToTest;
}
@Component
static class DependencyOfClassToTest{
@Autowired
private MyOwnDependencyINeedHereInTheMock myOwnDependencyINeedHereInTheMock;
}
@Component
static class MyOwnDependencyINeedHereInTheMock{
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.