问题标签 [prophecy]

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 投票
0 回答
218 浏览

php - PHP Prophecy 模拟不存在的类

我正在编写一个包,我想在Prophecy而不是Mockery中编写测试。包类Bar有一个方法,该方法sayName需要一个对象FooInterface作为参数实现。

使用 Mockery 创建不存在的类的模拟没有问题:

给出:

这是一个模拟测试

如何用Prophecy达到同样的效果?

0 投票
0 回答
284 浏览

composer-php - phpunit 错误:找不到类 'Prophecy\Prophet'

我正在使用以下代码在 Prophecy 中编写一些 PHPUnit 测试:

这产生了以下输出:

Sebastian Bergmann 和贡献者的 PHPUnit 6.5.14。

测试项目测试套件 E.
2 / 2 (100%)

时间:105 毫秒,内存:6.00MB

有 1 个错误:

1) Tests\AppBundle\Service\EnclosureBuilderServiceProphecyTest::testItBuildsAndPersistsEnclosure 错误:找不到类“Prophecy\Prophet”

我对 PHPUnit 和一般测试有点陌生,但据我了解,PHPUnit 应该具有对使用 Prophecy 的内置支持,这使得上述错误非常令人惊讶。

我尝试安装phpspec/prophecy但该过程失败,如下所示:

0 投票
1 回答
901 浏览

php - 预言 - 期望不会在对象上调用任何方法

现在我在 PHPUnit 中使用以下代码来期望在模拟上没有调用任何方法:

到目前为止,我还没有找到在 Prophecy 中实现相同结果的方法。到目前为止,我只能测试特定方法的假设,而不是上面示例中的所有方法。

目前我正在使用以下自定义断言来测试是否没有调用任何方法。Prophecy 的 ObjectProphecy 公开了一个方法来获取对特定函数的所有调用,因此我使用反射来获取类上的所有方法,而不是每个方法的每次调用。如果之后调用数组为空,我知道没有调用任何方法。该方法现在看起来像这样:

到目前为止,它适用于我有限的样本量,但我对此并不满意。我觉得应该有一种更简单的方法来实现相同的结果。

0 投票
0 回答
81 浏览

php - 具有不同参数的 phpspec/prophecy 存根方法调用

我有一个特定外部 API 的包装器,它是这样构造的(它是 PHP8 语法思想):

所以这个类的规范是这样构造的:

我在它使用那些静态方法进行调用时对其进行调试,所以它似乎正确地模拟了构造函数。

这个 API 客户端类有这样一个方法(简化):

我想为此写一个规范

问题是规范制作getQuotasUrl是第一次调用而不是制作getSurveysUrl,我做错了什么?或者也许预言不考虑间谍输入参数并总是使用最后一个?

提前致谢!

0 投票
1 回答
53 浏览

php - PHP Prophecy ->reveal() 方法 - 我应该将期望(如“willReturn”、“ShouldBeCalled”)放在它之前还是之后?

现在使用 PHP Prophecy。我有两个代码示例:一个:

我不明白哪个是正确的方法,为什么?