phpspec 和 laravel 设置

2024-04-04

我正在建立一个新的 Laravel 项目并集成 PHPSpec。我无法找到可以与 Laravel 完美配合的 phpspec.yml 文件的良好工作示例。与 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”时,它不会运行任何测试。 我还意识到命名空间不是 Laravel 中的“模型”和“控制器”,也许更像是 Eloquent 和 BaseController。

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

我不确定如何设置它,也找不到任何工作示例。 提前致谢!

编辑: Jeffrey Way 在另一个论坛上找到的建议:

您可以使用 Behat 测试您的控制器。 PHPSpec 不是替代品 对于它(或Codeception)。

UPDATE:

从那时起,我决定改用 Codeception,因为它似乎可以巧妙地集成到 Laravel 中并得到广泛使用。


请通过电子邮件回复本·康斯特布尔 https://github.com/BenConstable :

使用 Laravel 设置 PHPSpec 及其默认文件布局非常困难,我还没有弄清楚如何做到这一点。但是,您可以使用稍微不同的布局来使其工作,例如:

- app
    - Controllers
        - MyController.php
    - Models
        - MyModel.php
- spec
    - Controllers
        - MyControllerSpec.php
    - Models
        - MyModelSpec.php

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

extensions:
    - PhpSpec\Laravel\Extension\LaravelExtension

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 Packages 的布局)。

将来,我将尝试研究它,看看是否可以让 PHPSpec 使用默认的 Laravel 布局 - 如果/当我这样做时,我将在 GitHub 上更新该项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

phpspec 和 laravel 设置 的相关文章

随机推荐