我是 PHP 测试的新手,正在尝试使用 TDD 构建一个简单的项目。
简单的想法是制作某种简单的卡片/甲板设置。
我开始编写测试,并迅速开始从我失败的测试中混搭CardDeck类和CardStack类。他们都实现了一些相同的方法,比如 getTop()、getTopStack().. 所以我决定实现一个CardDeckInterface,一个抽象类BaseCardStack来干掉它。
重构之后。CardDeck 和 CardStack 扩展了实现 CardStackInterface 的 BaseCardStack。
CardDeck 和 CardStack 的唯一区别在于 CardStack 的构造和一些附加功能。否则,BaseCardStack 中的任何已实现功能都不会被覆盖。
这就是我的麻烦所在。在我的CardDeckTest 中,我进行了与已实现方法相关的测试,这些方法已移动 BaseCardDeck。
我是否应该将当前的测试保留在 CardDeckTest 中(它们仍然像以前一样通过)并为 CardStackTest 编写一组额外的测试?这似乎是错误的解决方案,因为这些方法已经过测试并且没有任何不同(没有被覆盖),正如我所提到的,BaseCardStack 中实现的方法没有被覆盖。
相反,我认为我应该为我的抽象类移动/编写测试。
基本上我想测试我的抽象类中的函数,我知道这些函数将被实现而不会被覆盖。
但是我该怎么做呢?我应该嘲笑吗?我应该改变我的模式吗?