Php 如何在不接触数据库的情况下测试Laravel雄辩的收藏?

Php 如何在不接触数据库的情况下测试Laravel雄辩的收藏?,php,testing,laravel,phpunit,eloquent,Php,Testing,Laravel,Phpunit,Eloquent,我如何对一个存储库进行单元测试,该存储库获取了一个有说服力的模型并随后使用了一个收集方法,但不涉及数据库 例如:如果我有一个processUsers($id)方法,这个方法可以使用一个雄辩的集合方法来处理它们。如果有数千个用户,我可以使用$users->chunk(50,函数($myUsers){//process 50 only time only})功能来处理用户。然而,要使用它,我必须实际调用数据库。如何模拟数据库获取,但仍然使用chunk()方法?是否尝试过模拟$this->mock=m

我如何对一个存储库进行单元测试,该存储库获取了一个有说服力的模型并随后使用了一个收集方法,但不涉及数据库


例如:如果我有一个processUsers($id)方法,这个方法可以使用一个雄辩的集合方法来处理它们。如果有数千个用户,我可以使用
$users->chunk(50,函数($myUsers){//process 50 only time only})
功能来处理用户。然而,要使用它,我必须实际调用数据库。如何模拟数据库获取,但仍然使用chunk()方法?

是否尝试过模拟<代码>$this->mock=mockry::mock(‘雄辩’、‘用户’)你是什么意思?我想在不接触数据库的情况下实际执行分块,因此我不想模拟
chunk
方法。不过,我确实希望它使用虚拟数据,以免触及数据库。您正在寻找一种从本质上模拟Laravel模型的方法。这是出了名的棘手。我已经求助于为我的测试环境设置SQLite db,因为要真正模拟一个模型需要进行大量的黑客攻击。SQLite不支持MySQL所支持的所有数据类型,所以我必须更改我的模式。这也使得测试速度慢得多。