0 0

基于状态的jMockit如何mock静态对象10

    private static GrouponCommonService grouponCommonService = null;
    private static GrouponIndexService grouponIndexService = null;

    static {
        try {
            grouponCommonService = (GrouponCommonService) SpringBeanProxy.getBean("grouponCommonService");
            grouponIndexService = (GrouponIndexService) SpringBeanProxy.getBean("grouponIndexService");
            // 直接初始化一次
            getPromotionStatus();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

public static Integer getPromotionStatusFromDB() {

        GrouponConfig config = grouponCommonService.getGrouponConfigByMcsite();

 

。。。。

请问如何mock出grouponCommonService、 grouponIndexService,并mock出grouponCommonService.getGrouponConfigByMcsite()?

以下是我所做的,可是能mock出grouponCommonService对象,但getGrouponConfigByMcsite()方法返回值为空。

 

 

private void mockServiceImpl() {
        // TODO Auto-generated method stub
        new MockUp<SpringBeanProxy>() {
            @Mock
            public Object getBean(String beanName){
                if("grouponCommonService".equals(beanName)) {
                    return new MockUp<GrouponCommonService>() {
                        @Mock
                         public GrouponConfig getGrouponConfigByMcsite() {
                            GrouponConfig config = new GrouponConfig();
                            config.setId(73);
                            config.setPriviewBeforeTime(new Date());
                            config.setPriviewEndTime(new Date());
                            config.setPriviewStartTime(new Date());
                            config.setPromotionEndTime(new Date());
                            return config;
                         }
                    }.getMockInstance();
                }else if("grouponIndexService".equals(beanName)) {
                    return new MockUp<GrouponIndexService>() {
                        @Mock
                        public Date getDBDate() {
                            return new Date();
                        }
                    }.getMockInstance();
                }
                return null;
            }
        };
    }

 

期待感兴趣的同仁指导。。。

2013年7月25日 17:08
目前还没有答案

相关推荐

    JMOCKIT mock 静态方法 单元测试

    可以用来Mock JAVA代码中的静态方法

    jmockit总结

    基于行为的模拟关注的是测试对象如何与其他对象交互,而不是对象的内部状态。在 JMockit 中,你可以定义期望(Expectations),即模拟方法的调用和响应。例如,你可以设置当某个方法被调用时返回特定值,或者在特定...

    使用PowerMock来Mock静态函数

    静态方法由于其非实例化特性,通常难以通过常规的单元测试方式进行隔离和测试,因为它们不依赖于对象的状态。PowerMock提供了一种解决方案,让我们能够创建预期的行为,以便在测试中控制静态方法的行为。 首先,...

    基于python的mock测试数据练习

    Python 提供了一个强大的库——`unittest.mock`,用于模拟(mock)对象、方法和类,以便在测试中隔离依赖关系,专注于测试目标代码的功能。本练习主要关注如何使用 `unittest.mock` 进行mock测试数据。 一、Mock...

    Mock是一个零侵入的服务端Mock平台,底层基于JVM Sandbox。相比于Fiddler、-mock-fe.zip

    Mock平台基于JVM Sandbox(Java虚拟机沙箱)运行,它为开发者提供了一个安全的环境来运行和控制Java应用程序,确保了Mock操作不会影响到真实的生产环境。 JVM Sandbox是一个虚拟化技术,它可以隔离运行的Java应用,...

    0积分:Mock对象教程

    ### 使用Mock对象在Java单元测试中的重要性及实践 #### 引言 在软件开发过程中,单元测试作为确保代码质量的重要环节,其有效性往往受到多种因素的影响,尤其是当待测方法依赖于外部资源如网络、数据库或其他复杂...

    JMockit学习分享

    本文将深入探讨JMockit这一强大的mock框架,它不仅支持模拟私有成员、静态方法,还能自动化地完成mock对象的创建与注入等工作。通过一系列具体示例和概念解析,帮助读者全面掌握JMockit的核心功能及其实现细节。 ##...

    Go-Mockcounterfeiter-一个工具用于在Go中生成自容器类型安全的测试Mock对象

    Mock counterfeiter的工作原理是基于代码分析,它可以自动生成符合接口定义的Mock对象。在Go中,接口是一种强大的特性,允许我们定义一套方法集合,而Mock counterfeiter就是利用这一特性,为给定的接口创建Mock实现...

    Python-基于PythonDjango用于restful风格API的MockServer

    在现代软件开发中,API(应用程序接口)已经成为数据交换的核心,特别是RESTful API,它遵循HTTP协议,提供了一种简洁、无状态、基于资源的交互方式。Python Django框架是一个强大的Web开发平台,而将Django应用于...

    Node.js-QuickMock基于Express的mock接口平台

    虽然默认情况下Mock数据是静态的,但通过扩展,可以实现动态生成数据,如模拟随机用户、时间戳等。 3. **接口管理界面**: 对于大型项目,可以考虑添加一个简单的管理界面,用于查看、编辑和管理Mock接口,提高...

    利用PowerMock模拟静态方法和私有方法的示例

    静态方法与对象实例无关,它们属于类本身,因此无法通过依赖注入的方式来模拟。PowerMock通过字节码操作,能够在运行时改变静态方法的行为,使得我们可以在测试中控制它们的返回值或行为。 对于私有方法,由于其...

    基于模拟对象MockObject的单元测试研究.pdf

    不错的文档,提供给科研人员

    基于Java探针的Mock框架.zip

    3. **复杂的模拟**:可能支持模拟静态方法、final类或方法,这些都是传统Mock框架难以处理的。 4. **代码覆盖率**:结合探针,可能提供更精确的代码覆盖率报告,帮助确定未被测试的代码区域。 文件名“java0323”...

    JMockit教程.pdf

    正如其名,在单元测试时,CUT(Code Under Test ,被测试代码)可能会依赖其他代码,可以使用JMockit API来mock被依赖的代码,从而进行隔离测试。 JMockit有两套API,mock API用来进行mock测试;mock-up API用来...

    JMockit基础教程

    JMockit会自动管理模拟对象的状态,从录制模式到重播模式,最后到验证模式。 ### **验证结果** 验证结果是确保模拟行为与实际执行相符的关键步骤。JMockit提供了多种验证方式: 1. **结果验证(Result ...

    Mock

    5. **避免Mock静态方法**:静态方法没有实例,Mock起来较为困难,一般推荐重构代码以避免依赖静态方法。 在实际项目中,Mock可以用于以下场景: 1. **隔离外部服务**:比如模拟数据库查询,避免在测试中真正访问...

    基于mockjs轻量的可配置的mock数据服务库

    这个"基于mockjs轻量的可配置的mock数据服务库"项目,旨在提供一个简单、灵活且易于配置的解决方案,帮助开发者快速构建无需依赖实际后端API的测试环境。 在JavaScript开发过程中,尤其是进行单元测试或集成测试时...

Global site tag (gtag.js) - Google Analytics