我很难决定或理解在Laravel进行测试的最佳方法。
我非常喜欢PHPSpec测试的行为方面,尽管它与测试雄辩的模型或任何与活动记录ORM相关的内容不兼容。
当测试像服务提供者这样的东西时,PHPSpec似乎是可行的。
**是否希望用类似于PHPUnit的东西测试模型,然后用类似于PHPSpec的东西测试其他非ORM层,例如服务提供者?*
发布于 2014-12-21 10:54:10
我不知道Laravel,但是阅读人们在单元测试中遇到的问题--它告诉我那里有很多设计问题。我知道Laravel的那些有问题的特性是可选的,所以有希望!
参见我在另一个问题的回答: PhpSpec与PhpUnit的比较:First Shot at Testing Laravel 4 apps (PHPSpec/BDD vs. PHPUnit/TDD)
我猜您在使用Laravel时会遇到很多问题,而且通常您必须避免指定Laravel特定的怪癖,或者避免它们(外观是可选的,您可以使用适当的依赖注入)。我的目标是让尽可能多的代码独立于框架,并对它们进行适当的单元测试。然后,您可以拥有一层薄薄的框架胶水代码,包括功能测试或集成测试。应用依赖项注入。
作为一个来自Symfony和Doctrine的例子,我通常不为Doctrine存储库编写规范。我只希望他们能实现一个特定的接口。就这样。其余的都是我的验收测试。验证存储库是否使用查询生成器来生成预期的查询没有多大价值。真的没什么意义。
回到工具上,我可以看到自己为不同类型的测试混合了不同类型的测试工具:
发布于 2014-12-21 11:54:04
这实际上与Laravel没有什么特别的关系,实际上是ActiveRecord作为一种模式的一个基本问题。当您使用ActiveRecord时,您会牺牲可测试性。ActiveRecord与数据库持久性有着不可调和的联系。
如果您想使用先测试的方法,我建议您使用不同的持久性方法。把你的对象写成一起工作。然后再用类似于Doctrine的东西来附加持久性。
如果您想无论如何使用ActiveRecord,那么您将需要做一些不同的事情。拉勒维尔并没有强迫使用雄辩。但是,它确实是从盒子里运出来的。ActiveRecord是一个或多或少适合编写CRUD应用程序的工具。如果你在做更复杂的事情,我会建议你坚持原则。
https://stackoverflow.com/questions/27570864
复制相似问题