【问题标题】:loading fixtures with Symfony 5 in a WebTestCase在 WebTestCase 中使用 Symfony 5 加载固定装置
【发布时间】:2020-07-10 02:56:23
【问题描述】:

在 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】:

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();

如果您想为每个测试创建一个新的测试数据库,我会创建一个执行 MySQL 文件并获取数据的 bash 脚本。这样做可以让您对正在发生的事情和地点有很大的控制权。

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

通过这种方式,您将获得一个额外的抽象层,您可以在其中放置所有夹具设置以及您的网络(或 API,如果您对 API 执行相同的操作)可能需要的所有其他额外功能。

另一个不需要使用额外类的解决方案可能涉及特征并将您的函数放在那里。

我个人会推荐自定义父类,它具有一些可以在不同类型的测试之间共享的功能,例如


class MyAwesomeParentTestClass 
{
    use AwesomeFeatureTrait;
    use CustomAssertionsTrait;
}

我知道您不想使用额外的捆绑包,所以这只是一个额外的建议。如果您决定使用捆绑软件,我建议您使用:Alice

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    相关资源
    最近更新 更多