繁体   English   中英

Mockbean包含自动关联

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM