在WebTestCase中使用Symfony 5加载固定装置。

问题描述 投票:1回答:1

如何在Symfony 5中运行WebTestCase之前加载固定装置?

在不安装任何额外的捆绑程序的情况下,你使用哪些方法?

class MyPageControllerTest extends WebTestCase
{
    public function testIndexAction()
    {
        $client = static::createClient();

        $crawler = $client->request('GET', '/');

        $this->assertEquals(200, $client->getResponse()->getStatusCode());

        $table = $crawler->filter('.table-emp');

        $this->assertCount(1, $table->filter('tbody tr'));
    }
}
fixtures testcase symfony5
1个回答
0
投票

WebTestCase 扩展了Symfony的 KernelTestCase 它扩展了PHPUnit的TestCase。PhpUnit有几个重要的方法。

// executed once before the first test
public static void setUpBeforeClass();

// executed once before the last test
public static void tearDownAfterClass();

// executed once for every test before it starts
public void setUp();

// executed once for every test after it ends
public void tearDown();

如果你想为每次测试都有一个新鲜的测试数据库,我会创建一个bash脚本,执行MySQL文件,并让你的数据到位。这样做可以让你对发生的事情和地点有很多控制。

我认为,为了创建一些可重用和一致的东西,你可以创建自己的测试案例,可以扩展现有的Symfony Web测试案例。

这样你将获得一个额外的抽象层,你可以把所有的夹具设置和所有其他可能需要的额外功能放在你的Web(或API,如果你做同样的API)测试中。

另一个不需要使用额外的类的解决方案可以涉及到traits,并把你的功能放在那里。

我个人建议使用自定义的父类,其中包含一些特征,这些特征可以在不同类型的测试之间共享功能,如


class MyAwesomeParentTestClass 
{
    use AwesomeFeatureTrait;
    use CustomAssertionsTrait;
}

我知道你不想使用额外的捆绑,所以这只是一个额外的建议。如果你决定使用捆绑,我会推荐你使用这个。爱丽丝.

© www.soinside.com 2019 - 2024. All rights reserved.