繁体   English   中英

我可以使用jmock替换工厂返回的实现吗?

Can I use jmock to replace an implementation returned by a factory?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个返回接口FormatService的工厂:

public class FormatServiceFactory {
    public FormatService getService() {
        ...
    }
}

是否可以模拟该工厂,以便在我们的单元测试中始终返回FormatService - FormatServiceStub的存根实现?

2 个回复

要看。 被测代码如何获得/使用工厂?

如果在您要测试的方法中显式实例化了它,或者它是一个静态工厂,则将无法对其进行模拟。

如果将其注入到测试对象中,则可以在执行测试之前创建并注入模拟工厂。

使用JMock模拟工厂应该很容易。 从示例代码来看,它看起来像是一个类,而不是接口,因此您需要在JMock 1的cglib软件包中使用JMock的cglib版本和MockObjectTestCase类,在JMock 2的ClassImposteriser中使用。

一旦被模拟,您可以在定义getService()方法的期望时使其返回已存根的实现(甚至是模拟FormatService)。

模拟嘲笑= new JUnit4Mockery(){{setImposteriser(ClassImposteriser.INSTANCE);}};

最终的FormatServiceFactory工厂= mockery.mock(FormatServiceFactory .class);

context.checking(new Expectations(){{oneOf(factory).getService(); will(returnValue(new FormatServiceMock()));}}));

1 使用Ninject IOC替换工厂

我在解析器中有一个工厂方法。 基本上当我加载一个令牌时,我会查找该令牌的处理程序,或者直接进入默认处理程序。 我已经将它实现为一个switch和一个Dictionary<string,Type>但这两种方法都要求我将映射存储在除处理程序类之外的其他地方。 我们正在使用Nin ...

3 用 AutoFac 替换工厂

我习惯于创建自己的工厂,如图所示(为了说明,这是简化的): 我终于开始在我当前的项目中使用 IoC 容器 (AutoFac),我想知道是否有一些神奇的方法可以用 AutoFac 优雅地实现同样的事情? ...

4 用CDI替换工厂类

我的应用程序中有一系列处理器bean以及一个用于创建它们的工厂。 我可以使用CDI替换工厂类/方法吗? 而是使用@Produces? 我尝试使用以下内容来迭代或选择我想要的实例。 但是Weld告诉我allProcessorInstances.isUnsatisfied()== ...

6 使用宏替换工厂模式样式API中的“ create()”函数

我正在编写一个C ++库,其中所有类都利用了工厂模式 ,即具有一个私有的空构造函数和一个私有的void init()函数,该函数执行实例的实际初始化。 可以由库用户实例化的类具有公共静态create()函数,该函数执行以下操作: 还有一些类不应从库外部实例化 ,因此它们不提供公共cre ...

10 “交换工厂”值得吗?

我注意到,对于诸如Cloudbalancing之类的问题,存在移动工厂来生成移动和交换。 “移动”将云过程从一台计算机转移到另一台计算机。 “交换移动”交换来自其各自计算机的任何两个进程。 我正在开发一个时间表应用程序。 subjectTeacherHour (主题和教师的组 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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