Laravel 4 测试Laravel 4应用程序的第一枪(PHPSpec/BDD与PHPUnit/TDD)

Laravel 4 测试Laravel 4应用程序的第一枪(PHPSpec/BDD与PHPUnit/TDD),laravel-4,tdd,phpunit,bdd,phpspec,Laravel 4,Tdd,Phpunit,Bdd,Phpspec,我为这个问题绞尽脑汁已经太久了。我知道我需要跳到其中一个,因为它们显然都是可行的/有用的工具,但已经被困在篱笆上,研究了好几个星期 与之相比,哪一种可能会带来更好的长期可维护性和编程实践 我与几位经验丰富的PHPUnit->PHPspec转化者/用户进行了交谈,他们现在对PHPspec发誓,声称由于其BDD方法,它促进了更好的设计。然而,由于它是一个更新得多的工具,与PHPUnit相比,缺少社区/教程 目前,我的PHP开发主要集中在Laravel4开发上 当PHPUnit基本上被烘焙到Larav

我为这个问题绞尽脑汁已经太久了。我知道我需要跳到其中一个,因为它们显然都是可行的/有用的工具,但已经被困在篱笆上,研究了好几个星期

与之相比,哪一种可能会带来更好的长期可维护性和编程实践

我与几位经验丰富的PHPUnit->PHPspec转化者/用户进行了交谈,他们现在对PHPspec发誓,声称由于其BDD方法,它促进了更好的设计。然而,由于它是一个更新得多的工具,与PHPUnit相比,缺少社区/教程

目前,我的PHP开发主要集中在Laravel4开发上

当PHPUnit基本上被烘焙到Laravel框架中时,看起来这可能是一个更容易的选择,但我真的很喜欢PHPSpec的BDD方面。然而,PHPSpec似乎不想很好地使用Laravel的facade设置(我也发现这可能是一个很好的实践,在可能的情况下可以避免)

我真正的难题是,其中哪一个更有可能成功地集成到现有的Laravel4项目中,而现有的测试覆盖率为零

我在早期/短暂地尝试将PHPUnit和PHPSpec集成到现有项目中,但实际上不确定从何处开始编写初始测试,最终暂时放弃了它们

我真的在试图找出哪一个更值得长期投资


如果您对这两方面都有经验,请提供任何资源/见解,我们将不胜感激。

PhpSpec

PhpSpec是一种设计工具。如果你不习惯TDD(测试优先法),一开始你的生活会很艰难

不过,在这个过程中,你会学到很多东西。你也会说很多脏话。许多被认为是不好的做法,在PhpSpec中是不可能的(比如部分模拟)。你必须理解它并接受它。测试Laravel的facade很难,因为这不是OOP

使用PhpSpec测试现有代码要困难得多,因为必须首先使其可测试(使用测试优先的方法更容易)

PhpUnit

另一方面,PhpUnit是一种测试工具。您可以将其与TDD、BDD或任何您称之为它的东西一起使用。但你不必这么做

选择

如果您的目标是学习如何更好地设计,并且承诺测试第一种方法,PhpSpec将帮助您。如果你的目标是测试或验证,PhpUnit就是你的朋友

TDD与BDD的对比


它不是TDDBDD。至少从代码级的角度来看,它们是相同的。BDD最初是一个重新定义的TDD,提供了更好的术语。现在,它超越了代码级别,而且远远不止于此。现在我更喜欢使用Gojko Adzic提出的术语-示例规范

我一直在和同一件事搏斗,你是拉腊卡斯特的成员吗?Jeffrey Way在PHPUnit和PHPSpec上都有一些视频。因为我对测试是全新的,所以我决定从PHPUnit开始,因为有更多的文档,而且从PHPUnit开始似乎更容易。Hah@MitchGlenn这正是我的情况。从去年12月开始,我就和Laracasts在一起,从Jeffrey Way那里学到了很多东西(他最近似乎很喜欢PHPSpec)。我的开发人员的好奇心使我想深入研究PHPSpec,但似乎更明智的时间/成本效益更高的选择是PHPUnit,原因正是如此。谢谢你的投入。我6天前加入了,现在有65个视频,我觉得我的大脑很快就会从这么多精彩的内容中爆炸。我想从Jeffrey的出色表现来看PHPSpec,但正如你所说的,为了更具时效性,我从更简单的方法开始,完成工作。完美。这正是我从阅读和实验这两个方面得到的要点。。。在我的例子中,我可能需要从PHPUnit开始,因为我确实需要在一些现有项目中实现一些测试。然后!。。。跳进PHPSpec竞技场。在过去的几周里,我一直在使用rails/rspec(*喘息!),并且一直很享受。现在两个世界之间有点分裂。。。。感谢您的洞察力。我是否正确理解了这一点:任何时候您的函数使用laravel facade时,它都不再可以用phpspec进行测试?我想这可能与我的另一个问题有关()