【发布时间】:2011-10-18 21:07:03
【问题描述】:
我的问题与Injecting Mockito mocks into a Spring bean 中提出的问题非常相似。事实上,我相信那里接受的答案实际上可能对我有用。但是,我的答案有一个问题,然后再做一些进一步的解释,以防答案实际上不是我的答案。
所以我按照上述帖子中的链接访问了 Springockito 网站。我更改了我的 test-config.xml 以包含类似于以下内容:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mockito="http://www.mockito.org/spring/mockito"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.mockito.org/spring/mockito http://www.mockito.org/spring/mockito.xsd">
...
<mockito:mock id="accountService" class="org.kubek2k.account.DefaultAccountService" />
...
</beans>
目前www.mockito.org 重定向似乎有问题,因此我在https://bitbucket.org/kubek2k/springockito/raw/16143b32095b/src/main/resources/spring/mockito.xsd 找到了XSD 代码,并将xsi:schemaLocation 中的最终条目更改为指向此bitbucket 链接。
运行 mvn test 然后产生以下错误(为便于阅读添加了换行符):
Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
Line 43 in XML document from class path resource [spring/test-context.xml] is invalid;
nested exception is org.xml.sax.SAXParseException; lineNumber: 43; columnNumber: 91;
The prefix "mockito" for element "mockito:mock" is not bound.
所以关于 Springockito 的问题是:是否有可能再包含这个?我错过了什么?
现在,进行进一步的解释......
我有一个接口,我正在尝试测试其实现:
public interface MobileService {
public Login login(Login login);
public User getUser(String accessCode, Date birthDate);
}
该实现包含一个 DAO,Spring @Autowires 为我提供:
@Service
public class MobileServiceImpl implements MobileService {
private MobileDao mobileDao;
@Autowired
public void setMobileDao(MobileDao mobileDao) {
this.mobileDao = mobileDao;
}
}
我不想更改我的界面以包含setMobileDao 方法,因为那将添加代码只是为了支持我的单元测试。我试图模拟 DAO,因为这里的实际 SUT 是 ServiceImpl。我怎样才能做到这一点?
【问题讨论】: