大多数或所有Endeca的对象都具有内部构造方法。我工作的一个良好的项目,缺乏的伟大的试验的复盖范围绕Endeca API,是否有任何良好的战略单元的测试的相互作用与Endeca?

迄今为止最好的我们是怎样的一个穷人的适配模式:

public class DimValue : IDimValue
{
    public DimValue(Dimension dim, DimVal dimValue)
    {
        Dimension = dim;
        Value = dimValue;
    }

    public virtual bool IsNavigable()
    {
        return Value.IsNavigable();
    }

    public virtual long Id()
    {
        return Value.Id;
    }

    // and so on...
}

然后我们可以嘲笑我们自己的类型,DimValue.这是最好的方式,以保持他们的API作为测试可以?或是有另一种方法,是优选的到这个吗?

有帮助吗?

解决方案

如果你想测试的使用,然后我会推荐的方法。

这是一个好的设计目标是写您的应用程序建立在你自己的抽象,没有其他人的。适配器层给你一个机会,为翻译API域语言开发人员更舒适的并且给你自由改变技术的后面如果你的产品使用不足在某些方面。

Resharper了一个伟大的功能对于创造包装类。创建一个类,添加一个成员的类型,你要包裹..然后触发的产生与会代表重构。挑选所有公共'和你去那里..一个包裹类。

只有获得该子集它们的功能,你实际上是使用。在你的包裹码,提供接口,所以你可以嘲笑。

如果你是测试Endeca的API作为某种形式的回归套件,以便可以更容易地接受新的释放的他们API,然后我会编写测试在一个更加'接受'水平;行使API他们给你。但同样,只试验的方法,你实际上使用他们的API。

我会做所述办法,但是...

TypeMock会让你在模拟课程没有接口,以便可以允许另一种方法。

希望这会有所帮助。

其他提示

大多数Endeca类都是具体的,因此很难进行单元测试,在我们的最后一个项目中,我们必须为自己定义一个抽象层,这正是我们自己的代码和Endeca API EG IENDECAQUERY之间的一个外墙层。使用该抽象层,我们可以快速进行测试,而无需任何真正的EndeCa访问,您知道打开EndeCa连接将使您每次花费几秒钟。实施所有必要的endeca假物体是很多工作。我们的应用程序是一个电子商务网站,我们利用Endeca用于所有产品列表,搜索功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top