phpspec and laravel setup



我正在建立一个新的Laravel项目并集成PHPSpec。我很难找到一个很好的phpspec工作示例。该文件将与Laravel配合使用。类似于Rails中的RSpec。

我想要的文件夹结构如下

spec/
    models/
    controllers/
app/
    models/
    controllers/
我phpspec

。现在的Yml是这样的:

suites:
controller_suite:
    namespace: Controller
    spec_path: 'spec/controllers'
    src_path: 'app/controllers'
model_suite:
    namespace: Model
    spec_path: 'spec/models'
    src_path: 'app/models'  

我在spec/models文件夹中复制了我的模型相关测试,但是当我'phpspec run'时,它没有运行任何一个。我也意识到,命名空间不是"模型"one_answers"控制器"在Laravel,也许更像雄辩和BaseController..

我也使用这个扩展:https://github.com/BenConstable/phpspec-laravel

我不知道如何设置这个,找不到任何工作的例子。提前感谢!

编辑:Jeffrey Way在另一个论坛上给出的建议:

你可以用behaat测试你的控制器。PHPSpec不是替代品为它(或Codeception)。

更新:

我已经决定使用Codeception代替,因为它似乎整齐地集成到Laravel和广泛使用。

Ben Constable发来的电子邮件:

设置PHPSpec与Laravel的默认文件布局是相当困难的,我还没有弄清楚如何做到这一点。但是,您可以使用稍微不同的布局使其工作,例如:
- app
    - Controllers
        - MyController.php
    - Models
        - MyModel.php
- spec
    - Controllers
        - MyControllerSpec.php
    - Models
        - MyModelSpec.php

那么,在你的phpspec.yml中,你会有:

extensions:
    - PhpSpecLaravelExtensionLaravelExtension
suites:
    laravel_controller_suite:
        namespace: Controllers
        src_path: app
    laravel_model_suite:
        namespace: Models
        src_path: app
laravel_extension:
    testing_environment: 'testing'

,最后,您需要修改您的composer.json,以在自动加载类映射中包含app/。你的模型,控制器和任何将被命名空间,像:

<?php namespace Controllers;
use Controller;
class MyController extends Controller {}
那应该能解决你的问题。顺便说一下,当我一直在做Laravel项目时,我一直把一切都放在app/src/MyVendor/MyNamespace/Controllers等,我更喜欢作为一种布局(使源代码远离配置和其他文件,并且类似于Laravel软件包的布局)。

在未来,我将尝试查看它,看看我是否可以让PHPSpec与默认的Laravel布局一起工作-如果/当我这样做时,我会在GitHub上更新项目。

对于使用Laravel 5的用户。x和PhpSpec 4。你可以调整PSR4前缀配置,以使PhpSpec与Laravel布局兼容。

我的项目使用这个配置:

suites:
    app:
        namespace: App
        src_path: app
        psr4_prefix: App
        spec_prefix: classes
        spec_path: specs

相关内容

  • 没有找到相关文章

最新更新