use*_*810 13 php testing unit-testing laravel lumen
我想在一些PHPUnit测试中使用Laravel的Model Factory.我唯一想做的就是创建一个Model实例而不将其保存到数据库中.
为什么Model Factory需要连接到数据库?这些测试必须传递CI环境而不配置数据库.
当我手动创建模型时new App\Model($dataArray),测试通过并且不需要连接.
我在其他地方使用Model Factory,所以我想在测试中重用它,以避免代码重复.
我正在使用MongoDB和jenssegers/laravel-mongodb库,但我猜它无论如何 - 在纯粹的Eloquent和MySQL数据库中,问题都是一样的.
没有数据库的测试:
class ModelTransformerTest extends TestCase
{
public function testTransformMinimalModelData()
{
$data = [
'_id' => $faker->md5,
'email' => $faker->email,
];
$model = new App\Model($data);
// […];
}
}
Run Code Online (Sandbox Code Playgroud)
我的模型工厂
$factory->defineAs(Model::class, 'base', function ($faker) {
return [
'_id' => $faker->md5,
'email' => $faker->email,
];
});
Run Code Online (Sandbox Code Playgroud)
需要数据库连接的测试:
class ModelTransformerTest extends TestCase
{
public function testTransformMinimalModelData()
{
$model = factory(App\Model::class, 'base')->make();
// […];
}
}
Run Code Online (Sandbox Code Playgroud)
完整堆栈跟踪:
Error: Class 'MongoDB\Driver\Manager' not found
app\vendor\mongodb\mongodb\src\Client.php:56
app\vendor\jenssegers\mongodb\src\Jenssegers\Mongodb\Connection.php:147
app\vendor\jenssegers\mongodb\src\Jenssegers\Mongodb\Connection.php:37
app\vendor\jenssegers\mongodb\src\Jenssegers\Mongodb\MongodbServiceProvider.php:27
app\vendor\illuminate\database\DatabaseManager.php:173
app\vendor\illuminate\database\DatabaseManager.php:68
app\vendor\illuminate\database\Eloquent\Model.php:3282
app\vendor\illuminate\database\Eloquent\Model.php:3248
app\vendor\jenssegers\mongodb\src\Jenssegers\Mongodb\Eloquent\Model.php:523
app\vendor\jenssegers\mongodb\src\Jenssegers\Mongodb\Eloquent\Model.php:284
app\vendor\illuminate\database\Eloquent\Model.php:443
app\vendor\illuminate\database\Eloquent\Model.php:281
app\vendor\illuminate\database\Eloquent\FactoryBuilder.php:142
app\vendor\illuminate\database\Eloquent\Model.php:2286
app\vendor\illuminate\database\Eloquent\FactoryBuilder.php:143
app\vendor\illuminate\database\Eloquent\FactoryBuilder.php:106
app\tests\phpunit\Transformers\ModelTransformerTest.php:25
\php\pear\PHPUnit\TextUI\Command.php:176
\php\pear\PHPUnit\TextUI\Command.php:129
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |