我正在建立一个新的Laravel项目并整合PHPSpec.我无法找到一个与Laravel整齐合作的phpspec.yml文件的良好工作示例.与Rails中的RSpec类似.
我想要的文件夹结构如下
spec/
models/
controllers/
app/
models/
controllers/
Run Code Online (Sandbox Code Playgroud)
我的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'
Run Code Online (Sandbox Code Playgroud)
我在spec/models文件夹中复制了我的模型相关测试,但是当我'phpspec运行'它没有运行它们中的任何一个.我也意识到命名空间不是Laravel中的'Model'和'Controller',也许更像是Eloquent和BaseController.
我也使用这个扩展名:https://github.com/BenConstable/phpspec-laravel
我不知道如何设置它,找不到任何有用的例子.提前致谢!
编辑:来自Jeffrey Way的另一个论坛上的建议:
您可以使用Behat测试您的控制器.PHPSpec不能代替它(或Codeception).
更新:
我已经决定使用Codeception,因为它似乎整齐地集成到Laravel并广泛使用.
请通过Ben Constable的电子邮件回复:
使用Laravel及其默认文件布局设置PHPSpec非常困难,我还没有想出如何做到这一点.但是,您可以使用稍微不同的布局,例如:
Run Code Online (Sandbox Code Playgroud)- app - Controllers - MyController.php - Models - MyModel.php - spec - Controllers - MyControllerSpec.php - Models - MyModelSpec.php
然后,在你的
phpspec.yml
你有:Run Code Online (Sandbox Code Playgroud)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/
在自动加载类的地图.您的模型,控制器和其他任何内容都将被命名空间,如:Run Code Online (Sandbox Code Playgroud)<?php namespace Controllers; use Controller; class MyController extends Controller {}
那应该是你排除.顺便说一句,当我一直在制作Laravel项目时,我一直把所有东西都放在
app/src/MyVendor/MyNamespace/Controllers
等等中,我更喜欢它作为布局(使源远离配置和其他文件,并且类似于Laravel包的布局) .在将来,我将尝试调查它,看看我是否可以使用默认的Laravel布局使用PHPSpec - 如果/当我这样做时,我将在GitHub上更新项目.
归档时间: |
|
查看次数: |
2820 次 |
最近记录: |