gpt4 book ai didi

java - Mockito 当方法仅在调试时工作

转载 作者:行者123 更新时间:2023-11-30 06:03:20 24 4
gpt4 key购买 nike

我在模拟接口(interface)值之一时遇到问题。当我在 Debug模式下运行测试时,它工作正常,但在运行时我有 org.mockito.exceptions.misusing.UnfinishedStubbingException 。

更新 16.08.2018:仅当我在断线上或之前设置断点时它才起作用 - 如果没有它,调试时也会测试崩溃。如果我一直按住 F9,有些测试通过,有些失败,所以它必须与初始化时间有关,但仍然不知道如何修复它

在 Debug模式下它通过,但在运行模式下我在执行时在服务中遇到异常:String name = getPhoneBookName();

我还尝试将 Mockito.when 移动到设置 block ,但没有帮助

有什么想法吗?

代码如下:

我的服务规范:

private PropertyDAO propertyDAO = mock(PropertyDAO.class)     

def "Should fill all fields property for existing user"() {

given:"mock values to check proper form"
when(propertyDAO.getValue(PropertyDAO.Key.REMOTE_BOOK_NAME)).thenReturn("Phonebook")

when:
service.someMethod()

服务:

someMethod() {
String name = getPhoneBookName();
if (name != null) {
map.put("remotePhoneBookName", name);
}
}

@Override
public String getPhoneBookName() {
return propertyDAO.getValue(PropertyDAO.Key.REMOTE_BOOK_NAME);
}

PropertyDao

public interface PropertyDAO {
String VERSION_KEY = "VERSION";

public enum Key {
VERSION,
REMOTE_BOOK_NAME
}
String getValue(Key key);

属性HibernateDAO

@Repository("propertyDAO")
@Qualifier("hibernate")
public class PropertyHibernateDAO implements PropertyDAO {

@Override
@Transactional(readOnly = true)
public String getValue(Key key) {
String result = null;
Session session = sessionFactory.getCurrentSession();
String dbKey = DB_KEYS.get(key);
Criteria criteria = session.createCriteria(Property.class);
criteria.add(Restrictions.eq("key", dbKey));
Property property = (Property) criteria.uniqueResult();
if (property != null) {
result = property.getValue();
}
return result;
}

最佳答案

好的,我明白了。

事实证明,在我下面的关键模拟测试中,我尝试从问题中模拟 someMethod() ,然后它在执行时崩溃。非常感谢@Michał Piątkowski,因为最后你是对的;)

当我替换时它起作用:

     when(propertyDAO.getValue(PropertyDAO.Key.REMOTE_BOOK_NAME)).thenReturn("Phonebook")
when(configuration.getStationValues(any(), any(), anyString())).thenReturn(someMethod())

     when(propertyDAO.getValue(PropertyDAO.Key.REMOTE_BOOK_NAME)).thenReturn("Phonebook") 
def method =someMethod()
when(configuration.getStationValues(any(), any(), anyString())).thenReturn(method)

即使在下一栋大楼中,您也可以感受到代码气味,但我现在不知道其他解决方法

关于java - Mockito 当方法仅在调试时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51837616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com