【发布时间】:2021-05-01 01:58:35
【问题描述】:
嘿,我刚开始使用 PHPUnit。我正在尝试测试将模型(称为 Actor)插入数据库。此模型的创建导致创建其他模型(如 Subactor 和 Contact)。出于这个原因,我已经单独测试了每个模型的创建。
问题在于,当我尝试单独运行每个测试时,一切正常。但是,当我尝试运行全班测试时。 AssertCount 方法失败,因为每个方法都添加了一个模型,因此计数会增加,并且在运行整个类测试时数据库不会刷新。
我尝试在每个方法开始时初始化每个模型的计数,但我认为这不是最好的解决方案。
谁能帮忙?
谢谢!
class ActorTest extends TestCase
{
use WithFaker;
use RefreshDatabase;
/** @test */
public function an_actor_can_be_added()
{
$user = factory(Admin::class)->create();
$response = $this->actingAs($user)
->post('admin/actor',
array_merge(factory(Actor::class)->make()->toArray(),
['contact'=>[factory(Contact::class)->make()->toArray()]]));
$this->assertCount(1, Actor::all());
}
/** @test */
public function a_subactor_is_added_when_actor_created(){
$user = factory(Admin::class)->create();
$this->actingAs($user)
->post('admin/actor',
array_merge(factory(Actor::class)->make()->toArray(),
['contact'=>[factory(Contact::class)->make()->toArray()]]));
$this->assertCount(1, Subactor::all());
}
/** @test */
public function a_contact_is_added_when_actor_created(){
$user = factory(Admin::class)->create();
$this->actingAs($user)
->post('admin/actor',
array_merge(factory(Actor::class)->make()->toArray(),
['contact'=>[factory(Contact::class)->make()->toArray()]]));
$this->assertCount(1, Contact::all());
}
/** @test */
public function an_actor_is_linked_to_subactor_when_created(){
$user = factory(Admin::class)->create();
$this->actingAs($user)
->post('admin/actor',
array_merge(factory(Actor::class)->make()->toArray(),
['contact'=>[factory(Contact::class)->make()->toArray()]]));
$actor = Actor::first();
$subactor = Subactor::first();
$this->assertEquals($actor->id, $subactor->actor_id);
}
/** @test */
public function a_subactor_is_linked_to_contact_when_created(){
$user = factory(Admin::class)->create();
$this->actingAs($user)
->post('admin/actor',
array_merge(factory(Actor::class)->make()->toArray(),
['contact'=>[factory(Contact::class)->make()->toArray()]]));
$subactor = Subactor::first();
$contact = Contact::first();
$this->assertEquals($subactor->id, $contact->subactor_id);
}
}
【问题讨论】:
标签: php database laravel unit-testing phpunit