Laravels在工作台上整洁地测试助手?

时间:2014-02-07 17:07:31

标签: laravel laravel-4 phpunit workbench

查看laravel testing documentation,您可以了解我喜欢在工作台中使用的所有酷助手。

可悲的是我无法这样做。

从包目录运行我的测试时,

Illuminate\Foundation\Testing\TestCase似乎不可用,因此我无法扩展它。

<?php namespace Acme\Foo;

    class TestCase extends \Illuminate\Foundation\Testing\TestCase {

    /**
     * Creates the application.
     *
     * @return \Symfony\Component\HttpKernel\HttpKernelInterface
     */
    public function createApplication()
    {
        $unitTesting = true;

        $testEnvironment = 'testing';

        return require __DIR__.'/../../../../bootstrap/start.php';
    }

}

PHP Fatal error:  Class 'Illuminate\Foundation\Testing\TestCase' not found in 
/Applications/MAMP/htdocs/Webseiten/acme/workbench/acme/foo/tests/TestCase.php on line 3

我认为这不是正确的方法,无论如何应该这样做......

我已经找到orchestral/testbench,但我不确定使用它是否是个好主意。它似乎需要整个laravel框架,这对我没有意义? (包应该扩展laravel安装而不是第二次添加框架!?)

3 个答案:

答案 0 :(得分:2)

我就是这样做的,

首先,更改工作台目录中的phpunit.xml内容。您将“引导”属性部分,将其从vendor/autoload.php更改为../../../bootstrap/autoload.php

然后尝试在工作台目录上运行phpunit

答案 1 :(得分:1)

删除

  

命名空间Acme \ Foo;

应该修复它。然后你可以从包dir运行测试。还要确保在主应用程序目录中的包dir或 php artisan dump-autoload 中运行 composer dump-autoload

更新我能够在干净的Laravel 4.1安装中复制错误,并按照以下步骤修复它,而无需安装额外的软件包:

1 - 在主laravel根 composer.json (而不是workbench包composer.json文件)中安装PHPUnit

"require-dev": {
     "phpunit/phpunit": "3.7.*"
},

2 - 在主laravel根目录中运行 composer update

3 - 在测试类中使用完全限定名称(名称空间前缀为)

<?php
class SomeTest extends \Illuminate\Foundation\Testing\TestCase {
   public function createApplication()
   {
       $unitTesting = true;
       $testEnvironment = 'testing';
       return require __DIR__.'/../../../../bootstrap/start.php';
   }
   public function testSomething()
   {
       $this->assertTrue(true);
   }
}

4 - 要运行工作台包测试,请转到包目录并运行main phpunit

# in workbench/package/vendor dir run
../../../vendor/bin/phpunit

5 - 输出绿色标记识别laravel app第三方软件包

marcanuy@bolso-server:~/public_html/pkgtesting/workbench/my/pack$ ../../../vendor/bin/phpunit --debug
PHPUnit 3.7.31 by Sebastian Bergmann.

Configuration read from /home/marcanuy/public_html/pkgtesting/workbench/my/pack/phpunit.xml


Starting test 'SomeTest::testSomething'.
.

Time: 64 ms, Memory: 6.25Mb

OK (1 test, 1 assertion)

答案 2 :(得分:0)

对我来说,由于workbench的设置方式,测试用例只能从PHPUnit_Framework_TestCase扩展。所以我从app文件夹而不是包文件夹运行测试用例。

我选择第二个选项,因为testbench在很大程度上取决于特定的Laravel版本,并且设置起来似乎有点沉重。我所做的是配置主应用程序下的phpunit.xml,将package tests文件夹包含为测试套件:

<testsuite name="MyPack">
    <directory>./workbench/winponta/mypack/tests/</directory>
</testsuite>

然后运行:

$ phpunit --testsuite=MyPack

使用此方法,我们仍然可以从\ Illuminate \ Foundation \ Testing \ TestCase扩展。

我在http://ngo-hung.com/blog/2014/04/16/laravel-unit-testing-in-workbench-note

找到了这个解决方案