当前位置:  开发笔记 > 编程语言 > 正文

Spring Mockito @injectmocks无法正常工作

如何解决《SpringMockito@injectmocks无法正常工作》经验,为你挑选了0个好方法。

嗨,我正在使用Mockito来测试我的Spring项目,但@InjectMocks似乎没有将一个模拟服务注入到另一个Spring服务(bean)中.

这是我要测试的Spring服务:

@Service
public class CreateMailboxService {   
    @Autowired UserInfoService mUserInfoService; // this should be mocked
    @Autowired LogicService mLogicService;  // this should be autowired by Spring

    public void createMailbox() {
        // do mething
        System.out.println("test 2: " + mUserInfoService.getData());
    }

}

以下是我想要模拟的服务:

@Service
public class UserInfoService {
    public String getData() {
        return "original text";
    }
}

我的测试代码在这里:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/root-context.xml" })
public class CreateMailboxServiceMockTest {

    @Mock
    UserInfoService mUserInfoService;

    @InjectMocks
    @Autowired
    CreateMailboxService mCreateMailboxService;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void deleteWithPermission() {
        when(mUserInfoService.getData()).thenReturn("mocked text");

        System.out.println("test 1: " + mUserInfoService.getData());

        mCreateMailboxService.createMailbox();
    }
}

但结果会如此

test 1: mocked text
test 2: original text  // I want this be "mocked text", too

似乎CreateMailboxService 没有得到模拟的UserInfoService,而是使用Spring的自动装配bean.为什么我@InjectMocks不工作?

问候

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有