In Laravel, there's a trait called DatabaseTransactions
which rolls back all transactions made by a test, to keep the database clean and isolated. It's fine and useful.
But there's a feature in PHPUnit called Test Dependencies in which you can use another test's output:
/**
* @test
*/
public function a_producer_test()
{
$user = factory(User::class)->create();
return $user;
}
/**
* @test
* @depends a_producer_test
*/
public function a_consumer_test(User $user)
{
$id = $user->id;
}
When using DatabaseTransactions
, you cannot use $user
inside a_consumer_test
because the transaction that created the user is rolled back and thus $user
is empty. If you remove use DatabaseTransactions;
from the test class, everything works fine and you can use $user
.
Now I want to have $user
inside my a_consumer_test
method, yet I want to roll back transactions and clean my database after execution of the tests. How can I do that?
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire