使用PHPUnit进行功能测试会在输入中给出意外的字符

时间:2013-09-20 12:00:35

标签: php ruby symfony tdd web-testing

我正在使用Symfony2开发一个Web应用程序。我的应用程序连接到一些我使用Ruby模拟的外部服务。这是我的红宝石模拟的片段

#Bunch of stuff...

after do
    response['Content-type'] = 'application/json'
end

#Bunch of stuff...

get '/configure/set_result' do

    #Bunch of stuff...
    JSON.generate 'success' => true,
        "message" => "whatever"
end

在我正在进行的一项功能测试中,我将此方法称为

<?php

class MyControllerTest extends WebTestCase {

    protected function setUp() {
        $this->client = static::createClient();
    }


    public function testWhatever() {

        $this->callMyMock(22);

        //Unimportant stuff

    }

    private function callMyMock($result) {

        $crawler = $this->client->request('GET', "http://localhost:5995/configure/set_result?resultCode=$result");
    }
}

问题是在日志中我得到了很多PHP警告(这实际上减慢了PHPUnit的速度。这是输出的一个例子:

WebApp.PHPUnitTests:
     [exec] PHPUnit 3.7.19 by Sebastian Bergmann.
     [exec]
     [exec] Configuration read from C:\Work\New Products Trunk\Software\WebApp\symfony2\app\phpunit.xml.dist
     [exec]
     [exec] PHP Warning:  Unexpected character in input:  '→' (ASCII=26) state=0 in C:\Work\New Products Trunk\Soft
endor\symfony\symfony\src\Symfony\Bridge\Twig\Extension\CodeExtension.php on line 140
     [exec] PHP Stack trace:
     [exec] PHP   1. {main}() C:\_Wallet\phpunit.phar:0
     [exec] PHP   2. PHPUnit_TextUI_Command::main() C:\_Wallet\phpunit.phar:527
     [exec] PHP   3. PHPUnit_TextUI_Command->run() phar://C:/_Wallet/phpunit.phar/PHPUnit/TextUI/Command.php:129
...
...
...
...

我做错了什么?

1 个答案:

答案 0 :(得分:0)

这是从.phar文件运行时的已知错误,因为在这种情况下,执行“突出显示”的函数不会获取文件名,而是获取phar的内容,因此意外输入。

一些背景知识:您的测试可能会触发异常,该异常由内部symfony ErrorHandler处理,该异常显示格式良好的堆栈跟踪,此格式化触发此警告。

此问题已修复:https://github.com/symfony/symfony/pull/8721/files

此问题的详细信息:https://github.com/symfony/symfony/issues/7798