symfony2 TDD 开发

发布于 2024-11-05 19:58:51 字数 124 浏览 4 评论 0原文

谁能提供一个使用 TDD 表示法在 Symfony2 中进行开发的标准示例吗?或者分享有关 TDD Symfony2 开发的有趣材料的链接(官方文档除外:))?

PS 有人为 MVC 模式的控制器部分编写单元测试吗?

Can anyone please provide a standard example for developing in Symfony2 using the TDD notation? Or share links to interesting materials for TDD Symfony2 development (except the official documentation :))?

P.S. Is anybody writing unit tests for controller part of MVC pattern?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仙女 2024-11-12 19:58:51

我只是为 silex 做的,它是一个基于 Symfony2 的微框架。据我了解,非常相似。我推荐它作为 Symfony2 世界的入门读本。

我还使用 TDD 来创建这个应用程序,所以我所做的是:

  1. 我编写了第一个测试来验证路线/操作
  2. 然后我在引导程序中实现了路线
  3. 然后我向我的测试添加了断言,例如应该显示什么
  4. 我实现了在我的代码等中

示例测试用例(在 tests/ExampleTestCase.php 中)如下所示:

<?php
use Silex\WebTestCase;
use Symfony\Component\HttpFoundation\SessionStorage\ArraySessionStorage;

class ExampleTestCase extends WebTestCase
{
    /**
     * Necessary to make our application testable.
     *
     * @return Silex\Application
     */
    public function createApplication()
    {
        return require __DIR__ . '/../bootstrap.php';
    }

    /**
     * Override NativeSessionStorage
     *
     * @return void
     */
    public function setUp()
    {
        parent::setUp();
        $this->app['session.storage'] = $this->app->share(function () {
            return new ArraySessionStorage();
        });
    }

    /**
     * Test / (home)
     *
     * @return void
     */
    public function testHome()
    {
        $client  = $this->createClient();
        $crawler = $client->request('GET', '/');

        $this->assertTrue($client->getResponse()->isOk());
    }
}

我的 bootstrap.php

<?php
require_once __DIR__ . '/vendor/silex.phar';

$app = new Silex\Application();

// load session extensions
$app->register(new Silex\Extension\SessionExtension());

$app->get('/home', function() use ($app) {
    return "Hello World";
});
return $app;

我的 web/index.php< /代码>:

<?php
$app = require './../bootstrap.php';
$app->run();

I just did it for silex, which is a micro-framework based on Symfony2. From what I understand, it's very similar. I'd recommend it for a primer to the Symfony2-world.

I also used TDD to create this application, so what I did was:

  1. I wrote my first test to verify the route/action
  2. Then I implemented the route in my bootstrap
  3. Then I added assertions to my test e.g., what should be displayed
  4. I implemented that in my code and so on

An example testcase (in tests/ExampleTestCase.php) looks like this:

<?php
use Silex\WebTestCase;
use Symfony\Component\HttpFoundation\SessionStorage\ArraySessionStorage;

class ExampleTestCase extends WebTestCase
{
    /**
     * Necessary to make our application testable.
     *
     * @return Silex\Application
     */
    public function createApplication()
    {
        return require __DIR__ . '/../bootstrap.php';
    }

    /**
     * Override NativeSessionStorage
     *
     * @return void
     */
    public function setUp()
    {
        parent::setUp();
        $this->app['session.storage'] = $this->app->share(function () {
            return new ArraySessionStorage();
        });
    }

    /**
     * Test / (home)
     *
     * @return void
     */
    public function testHome()
    {
        $client  = $this->createClient();
        $crawler = $client->request('GET', '/');

        $this->assertTrue($client->getResponse()->isOk());
    }
}

my bootstrap.php:

<?php
require_once __DIR__ . '/vendor/silex.phar';

$app = new Silex\Application();

// load session extensions
$app->register(new Silex\Extension\SessionExtension());

$app->get('/home', function() use ($app) {
    return "Hello World";
});
return $app;

My web/index.php:

<?php
$app = require './../bootstrap.php';
$app->run();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文