簡體   English   中英

為什么symfony2功能測試客戶端-> request()無法獲得成功的response()?

[英]Why is symfony2 functional test client->request() not getting successful response()?

因此,我決定深入研究phpunit測試,並在編寫測試之前可恥地寫出了php代碼。 無論如何,我只是在編寫一個非常簡單的測試,告訴我是否確實找到了正確的網頁。 不幸的是,我的一個斷言測試一直失敗。 我知道我的路線“ / login”是正確的,因為當我導航到localhost / index.php / login(其中index.php是app_dev.php的鏈接)時,頁面會正確顯示。 波紋管是我的routing.php文件:

caremonk_mainsite_login:
    pattern:  /login
    defaults: { _controller: CaremonkMainSiteBundle:Security:login }
    requirements:
        _method: POST|GET

caremonk_mainsite_login_check:
    pattern:  /login_check
    requirements:
        _method: POST|GET

caremonk_mainsite_signup:
    pattern:  /signup
    defaults: { _controller: CaremonkMainSiteBundle:CreateUser:signup }
    requirements:
        _method: POST|GET

caremonk_mainsite_logout:
    pattern:  /logout
    defaults: { _controller: CaremonkMainSiteBundle:Security:logout}
    requirements:
        _method: POST|GET

caremonk_mainsite_post_blog:
    pattern:  /post_blog
    defaults: { _controller: CaremonkMainSiteBundle:UserEvents:post }
    requirements:
        _method: POST|GET

caremonk_mainsite_my_profile:
    pattern:  /my_profile_edit
    defaults: { _controller: CaremonkMainSiteBundle:UserEvents:editProfile }
    requirements:
        _method: POST|GET

caremonk_mainsite_activate:
    pattern:  /activate/{username}/{token}
    defaults: { _controller: CaremonkMainSiteBundle:CreateUser:activateAccount }
    requirements:
        _methods: GET

caremonk_mainsite_password_reset_request:
    pattern:  /reset_password/
    defaults: { _controller: CaremonkMainSiteBundle:Security:passwordResetRequest }
    requirements:
        _methods: GET | POST

caremonk_mainsite_reset_password_email:
    pattern: /reset_password_email/{username}/{resetPasswordToken}
    defaults: { _controller: CaremonkMainSiteBundle:Security:sendNewPassword }
    requirements:
        _methods: GET

caremonk_mainsite_change_password:
    pattern: /change_password
    defaults: { _controller: CaremonkMainSiteBundle:Security:changePassword }
    requirements:
        _methods: GET | POST

caremonk_mainsite_home:
    pattern:  /
    defaults: { _controller: CaremonkMainSiteBundle:Home:index }
    requirements:
        _methods: GET

無論如何,以下是不斷失敗的測試代碼:

<?php

namespace Caremonk\MainSiteBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class SecurityControllerFunctionalTest extends WebTestCase
{
    public function testIndex()
    {
        $client = static::createClient();

        // I've done many tests
        // I've tried the following request with all failed results
        // $crawler = $client->request('GET', 'index.php/login');
        // $crawler = $client->request('GET', 'http://localhost/indpex.php/login');
        // $crawler = $client->request('GET', 'localhost/index.php/login');
        // You get the idea 

        $crawler = $client->request('GET', '/login');
        $this->assertTrue($client->getResponse()->isSuccessful());
    }
}

我的routing.yml和routing_dev.yml文件顯示如下

#routing_dev.yml
_wdt:
    resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
    prefix:   /_wdt

_profiler:
    resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
    prefix:   /_profiler

_configurator:
    resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
    prefix:   /_configurator

_main:
    resource: routing.yml

#routing.yml
caremonk_main_site:
    resource: "@CaremonkMainSiteBundle/Resources/config/routing.yml"
    prefix:   /

您為導入的路由添加了“ /”作為前綴,並且路由路徑以“ /”開始。

通常,我會為路由添加更有意義的前綴(並且不以“ /”結尾),或者從導入的路由中刪除“ /”。

運行以下命令將使您深入了解如何注冊路由。

app/console debug:router

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM