我正在建立一个新的 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(使用前将#替换为@)