要約
公式ドキュメント見て載ってなければソースコード見ろ。
背景
Laravelで複数のデータベースを跨ぐテストを実施する際のトランザクションの設定
で当然DBを指定してassertDatabaseHasをしたいが、DBの指定方法が公式ドキュメントにも載ってない。日本語も英語も両方とも。
ソースコードを見ると
<?php
namespace Illuminate\Foundation\Testing\Concerns;
use Illuminate\Foundation\Testing\Constraints\HasInDatabase;
use PHPUnit\Framework\Constraint\LogicalNot as ReverseConstraint;
use Illuminate\Foundation\Testing\Constraints\SoftDeletedInDatabase;
trait InteractsWithDatabase
{
/**
* Assert that a given where condition exists in the database.
*
* @param string $table
* @param array $data
* @param string $connection
* @return $this
*/
protected function assertDatabaseHas($table, array $data, $connection = null)
{
$this->assertThat(
$table, new HasInDatabase($this->getConnection($connection), $data)
);
return $this;
}
こんな記述が...
具体的にはPHPUnitでこう書けば良い。
$this->assertDatabaseHas('users', [
'name' => 'JMac',
'email' => 'jmac@example.com'
], 'mysql2');