gpt4 book ai didi

laravel - 如何在 Laravel 中重用 phpunit 测试方法

转载 作者:行者123 更新时间:2023-12-05 08:09:13 26 4
gpt4 key购买 nike

我有 2 个测试类,所有测试都运行良好。但问题是我不知道如何重用其他测试类方法。很抱歉,我是 Phpunit 的新手,我已经在搜索,但找不到解决方案。

class A_Test {

public function create_something_1()
{
$this->visit('/a/create')
->type('Name','name')
->press('Submit')
->seeInDatabase('something_1', ['name' => 'Name']);
$data = \App\Models\Something1::first();

return $data;
}

}


class B_Test {

public function create_something_2()
{

// The problem is here, I result of new A_Test always null
$a = (new A_Test)->create_something_1();

$this->visit('/b/create')
->select($a->id, 'something_1')
->type('New Name','name')
->press('Submit')
->seeInDatabase('something_2', ['name' => 'New Name']);

}

}

为了让 B_Test 正常工作,我总是像这样复制 A_Test 类中的方法

class B_Test {

public function create_something_1()
{
$this->visit('/a/create')
->type('Name','name')
->press('Submit')
->seeInDatabase('something_1', ['name' => 'Name']);
$data = \App\Models\Something1::first();

return $data;
}

public function create_something_2()
{
// This is work
$a = $this->create_something_1();

$this->visit('/b/create')
->select($a->id, 'something_1')
->type('New Name','name')
->press('Submit')
->seeInDatabase('something_2', ['name' => 'New Name']);

}

}

最佳答案

在您的 tests/TestCase.php 文件中,您可以这样做:

class TestCase extends Illuminate\Foundation\Testing\TestCase
{
....
protected function create_something_resusable()
{
$this->visit('/a/create')
->type('Name','name')
->press('Submit')
->seeInDatabase('something_1', ['name' => 'Name']);
$data = \App\Models\Something1::first();

return $data;
}
....
}

然后所有的测试都可以调用$this->create_something_resusable(),但记得在所有测试中扩展TestCase类。

关于laravel - 如何在 Laravel 中重用 phpunit 测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40209747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com