问题标签 [phpspec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
903 浏览

symfony - 使用 phpspec 测试 Symfony2 命令

我正在使用 phpspec 来测试我们的应用程序。现在我们需要开发一些命令,因此我也想指定这些命令。

我有点卡在这里,因为文档(http://symfony.com/doc/master/cookbook/console/console_command.html#testing-commands)只告诉我如何使用 phpunit 测试命令。

即使我会在规范中使用类似的方法(以某种方式创建内核,并实例化相关命令),我认为这不会遵循描述行为的想法。我只会指定输出是否正确,但如果命令调用正确的方法等等则不会。

有没有人使用 phpspec 成功描述过 Symfony2 命令?这样做的可行方法是什么?

谢谢

0 投票
1 回答
2255 浏览

php - 如何使用 phpspec 获取代码自动完成

我刚刚开始学习 phpspec 以替换 PHPUnit。不幸的是,我对使用 PHPStorm 编辑器的代码完成功能非常着迷,这使得即使是 PHPUnit 的冗长模拟界面也可以非常快速地键入。

phpspec 没有这样的运气。给定这样的类:

首先,shouldHaveType显示“未找到方法”突出显示,其次,如果我尝试在这???一点上自动完成,我的选择仅限于ObjectBehaviour. 我想看到像shouldHaveType,shouldImplement和更多的东西。

我在 Github 上找到了这个phpspec-stubs存储库,但它似乎只定义了一个方法,并且需要扩展一个包装类。

还有一个PHPStorm 插件,但我不清楚这是否应该提供自动完成功能,并且当前版本在输入任何 PHP 文件时立即在 PHPStorm 中给我一个 NullPointerException。

那么,你们所有的 phpspec 用户都输入了很多,还是有其他解决方案?

0 投票
1 回答
656 浏览

php - 如何将 php 规范与代码点火器一起使用?

我有一个代码点火器项目,我安装了 phpspec。我的问题是,当我对我的类运行测试时,它会抛出一个错误,即找不到该类的基类(由代码点火器框架自动加载),即“找不到类'CI_Controller'”。

我尝试手动包含基类的路径并删除namespace controllers;似乎可以解决该问题的行。但是现在我的 phpspec 测试失败了class controllers\Calculator does not exist

这是我的设置方式:

我在 src > 控制器 > Calculator.php 中的类:

我在规范 > 控制器 > CalculatorSpec.php 中的测试:

谁能帮我让它工作?

0 投票
2 回答
825 浏览

php - let 中的 phpspec 标量值

我正在尝试将 let 函数与标量值一起使用。我的问题是价格是双倍的,我希望是整数 5。

错误:

有没有办法使用 let 函数注入 5?

0 投票
1 回答
1178 浏览

php - PHPSpec/Prophecy 中通过引用传递的形式参数的存根

我在 PHP 中有一个方法,如下所示:

有没有办法$discountAmount在 PHPSpec 中存根?假设我有一个正在测试的类,并且我已经$someService通过构造函数注入。在我的规范中,我使用:

它为方法返回值创建存根。如何使用$discountAmount形式参数执行此操作?

0 投票
2 回答
1561 浏览

php - 未从不同的命名空间中找到 PHP 类

我目前正在使用 Phpspec 进行 Symfony2 项目,并且在扩展在不同命名空间中描述的 Spec 类时遇到问题。

例如,在我的项目中,我有以下类spec/Acme/Model/Foo/FooSpec.php

我还有另一门课要spec/Acme/Model/Bar/BarSpec.php扩展FooSpec

当我尝试运行 phpspec 时,出现以下错误:

PHP Fatal error: Class 'spec\Acme\Model\Foo\FooSpec' not found in /home/user/Projects/Acme/spec/Acme/Model/Bar/BarSpec.php on line 9

我发现使它起作用的唯一方法是在中添加以下行spec/Acme/Model/Bar/BarSpec.php

我不知道为什么我必须包含这个特定文件才能使其运行,尤其是在PhpSpec\ObjectBehavior正确找到其他类(如 )时。

你知道为什么会这样吗?


编辑:

正如@Phil 和@Sheikh Heera 在评论中所建议的那样,我尝试设置一个autoload来注册我的规范命名空间,但它也不起作用。这是我到目前为止所尝试的:

我还尝试修改文件vendor/composer/autoload_namespaces.php以添加以下内容:

但仍然是同样的错误。我也尝试过'spec' => array(getcwd())$loader->add('spec', getcwd());只是想看看会发生什么,这次我Cannot redeclare class参加了另一个规范课程。


我的 php 版本是PHP 5.4.9-4ubuntu2.4 (cli).

预先感谢您的帮助。

0 投票
0 回答
1568 浏览

php - 使用 phpspec 使用 Guzzle API 客户端测试 Symfony 2 捆绑包

早上好!

我最近创建了一个与第三方 API 集成的 Symfony 2 包。
我使用 Guzzle 和很棒的服务描述来创建客户端并调用 API。

现在我想提高质量并添加一些测试。经过一番阅读后,我开始使用 phpspec 对客户端进行功能测试,并使用 Behat 进行行为测试。
我读过你可以模拟 API 响应,但我不知道如何。尽管 phpspec 内部有一个模拟库(预言),但我找不到任何示例如何模拟预言中的响应。

我创建了我的规范

它在Bundle/spec/文件夹中创建了我的规范类。

这是我希望通过此测试模拟的响应:

HTTP/1.1 200 OK
Cache-Control: no-cache,no-store,must-revalidate
Connection: Keep-Alive
Content-Type: application/vnd.siren+json; charset=UTF-8
日期:2014 年 2 月 12 日 07:43:00 GMT
过期时间:星期四,1970 年 1 月 1 日 00:00:00 GMT,0
Keep-Alive:timeout=15,max=100
Pragma:no-cache
服务器:Jetty (8.yz-SNAPSHOT)
传输编码:分块
通过:1.1 test.local

{
“类”:[
“Make”
],
“属性”:{
“makeCode”:“1”,
“名称”:“阿尔法罗密欧”
},
“链接”:[
{
“rel”:[
“self”
],
“href”:“ https://test.local/v1/api/vehiclereferencedata/make/1
},
{“rel”:[
“模型”
],
“href”:“ https://test.本地/制造/1/模型“
}
]
}

我希望有人能让我走上正轨:)

0 投票
2 回答
581 浏览

rspec - phpspec - 断言在方法调用期间对象已更改

如果我有以下方法:

这是一个非常愚蠢的例子,但它是用来说明我的问题的。

传递的对象在方法调用过程中可能会发生变化,但方法不会返回对象。

使用 phpspec 如何断言对象已被修改?

0 投票
1 回答
732 浏览

php - phpspec,我想在调度程序上调用 shouldBeCalled

我搜索了使用 phpspec 对调度程序 symfony2 进行功能测试的可能性

我想这样做:

我的代码在这里:

phpspec 的答案是:

0 投票
1 回答
289 浏览

laravel - vagrant vm中的phpspec - 权限错误

我正在建立一个新的 Laravel 项目并希望在项目中使用 PHPSpec。

我可以从本地 OSX 机器运行 PHPSPec,但我希望能够从 VM 中运行它。从 Vagrant VM(当前是 Ubuntu 12)中运行时,我收到“找不到命令”或“权限被拒绝”错误。这似乎是因为文件在 VM 中不可执行,而 chmod +x 没有任何区别。

我的 Vagrantfile 中有以下内容:

这部分是为了让我可以在虚拟机全部设置完成后将其提供给同事,而无需他们在本地进行设置。从 VM 运行所有与开发相关的任务也感觉更好。对此可能意见不一。。

非常感谢任何帮助。先感谢您!