使用Laravel,PHPSpec和PHPUnit测试模型和服务

And*_*gan 1 php testing phpunit phpspec eloquent

我很难决定或理解在Laravel中测试的最佳方法.

我非常喜欢PHPSpec测试的行为方面,尽管它与测试Eloquent模型或与活动记录ORM相关的任何内容都不兼容.

当测试像服务提供商PHPSpec这样的东西似乎是要走的路.

**是否需要使用像PHPUnit这样的模型测试模型,然后测试其他非ORM层,例如PHPSpec之类的服务提供商?***

Jak*_*las 5

我不知道Laravel,但是阅读人们对单元测试的问题它告诉我那里有很多设计问题.我明白Laravel的那些有问题的功能是可选的,所以有希望!

在另一个问题的答案中看到我对PhpSpec与PhpUnit的比较:测试Laravel 4应用程序的第一枪(PHPSpec/BDD与PHPUnit/TDD)

我猜你在使用Laravel的PhpSpec时会遇到很多问题,而且你经常要避免使用Laravel特定的怪癖,或者避免使用它们(外墙是可选的,你可以使用适当的依赖注入).我的目标是尽可能多地从框架中获取代码并对它们进行适当的单元测试.然后,您可以拥有一层薄薄的框架粘合代码,涵盖功能或集成测试.应用依赖注入.

作为从Symfony和Doctrine的土地上取得的一个例子,我通常不会为Doctrine存储库编写规范.好吧,我只希望他们实现某个界面.就这样.剩下的就是我的验收测试.验证存储库使用查询构建器生成预期查询没有多大价值.真的没有意义.

回到工具,我可以看到自己混合使用不同类型的测试工具进行不同类型的测试:

  • phpspec - 单元测试 - 我会在这个级别上编写大部分测试
  • behat - 验收测试
  • phpunit - 集成和功能测试 - 我会有少量这些,因为它们很脆弱而且很慢.