如何在Symfony2中使用Beip与Liip\FunctionalTestBundle?

Bop*_*opi 7 fixtures symfony behat liipfunctionaltestbundle

我正在使用Liip\FunctionalTestBundle单元测试,它运行得很好.

AppCategoryControllerTest.php:

class AppCategoryControllerTest extends BoEditoAuthWebTestCase
{
    public function setUp()
    {
        parent::setUp();

        // It returns an array of class paths
        $this->loadFixtures($this->getAllDataFixtures());
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)

现在我想用Behat测试装置.

怎么可能?

FeatureContext.php:

/**
 * @BeforeScenario @createSchema
 *
 * load my fixtures with Liip\FunctionalTestBundle\Test\WebTestCase
 */
public function createDatabase()
{
    // What can I do here?
}
Run Code Online (Sandbox Code Playgroud)

Jak*_*las 3

由于这是一个 PHPUnit 测试用例,因此您不能直接在 Behat 中使用它。您需要在 Behat 上下文中复制该行为。

查看Behat/CommonContexts 中的SymfonyDoctrineContext。这应该是一个很好的起点。上下文是为 Behat 2 编写的,因此您需要针对 Behat 3 进行调整。

我使用 Liip\FunctionalTestBundle 进行单元测试,它工作得很好。

如果您使用的是FunctionalTestBundle,那么您就不是在编写单元测试。单元测试是隔离的。功能测试是集成测试的类型(不是孤立的)。如果您还没有注意到,这种测试既脆弱又缓慢。我建议您学习如何将更多精力集中在真正的单元测试上。