2014-04-25 64 views
1

我试图测试一个类,它实现了一个在类包的范围之外定义的接口(即,我在集成过程中使用composer将它作为依赖项进行了抽取)。PHP单元测试:如何测试从另一个包实现接口的类?

我想测试这个具体类,而不必拉入它所依赖的接口。无论如何要在php单元测试中测试这个吗?

目前我甚至不能实例化一个实例,因为显然找不到接口。

+0

为什么不简单地在测试中包含该依赖项?我的意思是,你的班级依赖于它,所以在测试中包括它没有什么不对。 – nietonfir

+0

那不是我正在测试的方法。应该嘲笑所有依赖关系,并且测试包单元不依赖于这些依赖关系。 –

+0

所以,你想测试你的类依赖于外部依赖,而不包括那个依赖。那么,我希望你看到这个陈述中的讽刺。 ;-) – nietonfir

回答

4

从这个意义上讲,你的类不是依赖的接口......没有什么可以模拟的。您只需确保该类是该类的测试中的接口实例。

你需要改变一些关于你的测试环境的知识,以便界面可用来测试你的类。以便您可以实例化并测试接口指定的方法的行为。

依赖注入是关于您的代码不需要代码的对象。接口或抽象类不是依赖关系。即使你的代码“依赖于”现有的东西。

依赖性是您类需要做的事情的外部对象。接口和抽象类定义你的类是什么。

+0

,这比nietonfir的'有用'评论更有意义。我遇到的问题是外部包提供了一个我必须实现的接口。我希望能够单独测试,而不必牵扯所有的依赖关系 –

+0

如果导入外部软件包确实是一种痛苦,那么可以在声明测试类之前在测试文件中创建接口。尽管如果您不小心,尝试重新声明相同的界面可能会导致问题。 – Schleis

+1

但是这不会消除测试的一些有用性吗?如果(实际)界面改变会怎么样? – nietonfir

相关问题