【发布时间】:2014-05-19 13:36:46
【问题描述】:
为依赖于具有关系的 Eloquent 模型的类编写单元测试的最佳方法是什么?例如
真实对象(带数据库)。这很容易,但速度很慢。
真实对象(无数据库)。我可以创建一个新对象,但我看不到如何在不写入数据库的情况下设置相关模型。
模拟对象。我在使用 Mockery 和 Eloquent 模型时遇到了问题(例如,请参阅 this question)。
其他解决方案?
context:我使用 Laravel 和 Authority RBAC 进行访问控制。我想找到在单元测试中测试我的访问规则的最佳方法。这意味着我需要在测试期间将用户依赖项传递给授权。
【问题讨论】:
-
权宜之计是使用内存中的 SQLite 数据库进行测试。我认为默认情况下 Laravel 实际上会为您执行此操作,尽管您确实需要在设置时调用播种机。不知道它是否真的比 MySQL 数据库快(例如),但是当你确实需要一个真正的数据库时,这似乎是一种做法。但是,是的,你真的应该尽可能多地嘲笑。我想要考虑的一件事是,您的测试拥有的代码越多,它们在测试您的实际代码时的实际可靠性就越低,而不是您编写测试以模拟您的“真实”代码的能力。
标签: php unit-testing laravel eloquent mockery