php - 使用 Laravel、PHPSpec 和 PHPUnit 测试模型和服务

标签 php testing phpunit eloquent phpspec

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

我真的很喜欢 PHPSpec 测试的行为方面,尽管它与测试 Eloquent 模型或与事件记录 ORM 相关的任何东西都不兼容。

当测试诸如服务提供者之类的东西时,PHPSpec 似乎是可行的方法。

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

最佳答案

我不了解 Laravel,但阅读人们在单元测试方面遇到的问题告诉我那里有很多设计问题。我知道 Laravel 的那些有问题的功能是可选的,所以还有希望!

在另一个问题的回答中查看我对 PhpSpec 与 PhpUnit 的比较:First Shot at Testing Laravel 4 apps (PHPSpec/BDD vs. PHPUnit/TDD)

我猜你在 Laravel 中使用 PhpSpec 会遇到很多问题,而且通常你必须避免指定 Laravel 特定的怪癖,或者避免它们(门面是可选的,你可以使用适当的依赖注入(inject))。我的目标是拥有尽可能多的独立于框架的代码,并对它们进行适当的单元测试。然后,您可以拥有一层薄薄的框架胶水代码,上面覆盖着功能或集成测试。应用依赖注入(inject)。

作为取自 Symfony 和 Doctrine 领域的示例,我通常不为 Doctrine 存储库编写规范。好吧,我只希望他们实现某个接口(interface)。就这样。其余部分包含在我的验收测试中。验证存储库是否使用查询构建器来生成预期查询没有太大值(value)。真的没有意义。

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

  • phpspec - 单元测试 - 我将在此级别编写大部分测试
  • behat - 验收测试
  • phpunit - 集成和功能测试 - 我将进行少量测试,因为它们脆弱且速度慢。

关于php - 使用 Laravel、PHPSpec 和 PHPUnit 测试模型和服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570864/

相关文章:

phpunit + symfony 错误处理程序已更改

symfony - 独立 Symfony2 包中的功能测试

php - PHPUnit 代码覆盖率如何忽略我的自动加载器?

header 重定向后 PHP session 索引未定义?

php - 使用 MySQL 获取数据库记录 - 使用 PDO 进行随机行选择

PHP num_rows 工作但显示错误

ios - Appium - 开发者证书问题

angularjs - 在 Jasmine + Angular 中测试 $httpBackend

php - colname 返回数据库表中的第一个条目,而不是选定的条目

.net - 你如何测试你的业务对象?