【问题标题】:PHPSpec - testing with AbstractSpecPHPSpec - 使用 AbstractSpec 进行测试
【发布时间】:2017-05-12 08:12:30
【问题描述】:

找不到这个解决方案,因为越来越多的人尝试测试抽象类。这不是我想要的。

我有模式策略,所有类都应该实现接口。 想要添加基本规范,其余的应该扩展并添加自己的东西。

我应该在所有规范中重复我的代码吗?

现在,我有两个策略规范:

function it_should_implements_LoadStrategyInterface()
{
    $this->shouldBeAnInstanceOf(LoadStrategyInterface::class);
}

如何不重复自己?

我尝试做AbstractStrategy,但得到了

Class 'spec\LoadStrategy\Strategies\AbstractStrategy' not found

我错过了什么?或者像这样的代码,不是自动加载的吗?或者,这是不好的做法?

【问题讨论】:

    标签: php tdd phpspec


    【解决方案1】:

    是的,您应该在每个规范中重复它。一种解决方法是使您的 Spec 文件扩展另一个 Spec 文件(您有这个常见示例),该文件本身扩展了基本的 phpspec 类。顺便说一下,我会在每个具体类中明确描述(测试)这个约束。

    【讨论】:

    • 在 5 个类与一个接口之后,您将拥有 5 个副本。任何关于该接口的测试,你也可以复制。而且您接受,在界面的任何更改中,您都必须更改 5 个规范和 5 个类。没有没有问题?干吗?
    • @timiTao 您只是在测试一个接口是否已实现。 A 认为这没什么大不了的,因为代码也是文档,在这种情况下,我更喜欢明确说明。顺便说一句,正如建议的那样,您可以编写一个超类并在每个规范文件中扩展它。
    猜你喜欢
    • 2015-08-25
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多