问题标签 [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 投票
1 回答
820 浏览

php - 使用 phpspec 测试 API 包装器

我正在尝试使用带有 phpspec 的 TDD 为 API 类创建一个包装器。

我编写了一个Client类,它处理从 REST API 请求/检索数据,然后将其映射到几个Entity类,因此它的行为类似于 ORM。

我现在有点卡住了,我来测试和使用 TDD 扩展应用程序。由于Client是实体类的依赖项(以便他们可以请求自己的子对象),我正在努力模拟它。

例如,以下是其中一个实体Comic.php, 可能的样子:

为简洁起见,这里是简化版的Client.php样子:

那么作为一个例子,一个测试看起来ComicSpec.php如何呢?it_gets_all_characters()

希望这是有道理的,如果需要可以提供更多信息。

谢谢参观。

0 投票
1 回答
1082 浏览

php - phpspec测试类构造函数

我刚刚开始在我的 Laravel 项目中使用 Phpspec。

我正在测试的类具有以下架构:

我没有包含实际代码,因为它非常简单。如果参数无效,它会引发异常,但如果您希望我用代码更新它,请告诉我。这是规范类:

我已经能够检查它是否为无效参数抛出异常,但现在我想确保它正在通过构造验证并在有效时返回值。

我已经阅读了文档,但找不到实现这一目标的方法,这让我相信我没有完全理解 BDD。

这种测试是单元测试,因此应该与行为测试分开吗?

0 投票
2 回答
784 浏览

php - 从 windows CMD 运行 phpspec 在 vendor/bin 而不是项目根目录中创建 spec 和 src 文件夹

最近我一直在学习 phpspec 和 gulp,并决定将它们集成到我的工作流程中。当我通过 composer 安装 phpspec 时,我得到了以下文件结构:

  • 小贩
    • 垃圾桶
      • php规范

还有更多文件和文件夹,但这些是相关的。

在我的 CMD 中,我目前指向项目的根目录并尝试运行:

但是,我收到一条错误消息,'vendor' isn't recognizes as internal or external command... 所以我通过执行移动到我的 bin 文件夹cd vendor/bin,然后运行phpspec它确实有效。但是,当我尝试描述一个类phpspec describe SeatsHandler时,它会创建不在根目录中的文件,而是在vendor/bin文件夹中创建它们:

  • 小贩
    • 垃圾桶
      • php规范
      • 规格
      • 源代码

我试图了解如何配置它并阅读有关phpspec.yml. 我已经在我的主文件夹中创建了这样的文件以及app目录(希望摆脱 app 目录):

我尝试将此文件放在我的主目录中,但它不起作用,我得到了与以前相同的结果。我也尝试将这个文件移入vendor/bin,但无济于事。

如何让 phpspec 在我的根目录而不是里面创建文件vendor/bin?另外,为什么它忽略phpspec.yml?

编辑:

我设法通过将我的修改phpspec.yml为:

并将其放入vendor/bin. 但是,仍然存在一个问题,如何在不进入vendor/binCMD 目录的情况下运行 phpspec?

0 投票
1 回答
147 浏览

laravel-4 - phpspec 无法打开输入文件

我刚刚使用 composer 将 phpspec 安装到了我的 Laravel 项目中,但是当我尝试运行时,phpspec我收到了这个错误:

当我尝试在没有别名的情况下运行它时是一样的vendor/bin/phpspec

我错过了什么?

0 投票
3 回答
2068 浏览

php - 在 PHPSpec 存根上仅模拟一种方法

好的,所以我试图将我的一个包移到 PHPSpec 测试中,但很快我遇到了这个问题。packages 是一个购物车包,所以我想测试一下,当您将两个商品添加到购物车时,购物车的计数为 2,很简单。但是当然,在购物车中,当添加两个相同的商品时,购物车中不会有新条目,但原始商品的“数量”将为 2。不同的尺寸。因此,每个项目都由一个唯一的 rowId 标识,基于它的 ID 和选项。

这是生成 rowId 的代码(由add()方法使用):

现在我已经这样写了我的测试:

但问题是,两个存根都返回nullgetId()方法。所以我尝试willReturn()为那个方法设置,所以我的测试变成了这样:

但是现在我收到错误,告诉我意外的方法被称为getName(). 所以我必须对 CartItem 接口上调用的所有方法执行相同的操作:

现在这有效,测试是绿色的。但感觉不对...我错过了什么还是对 PHPSpec 的限制?

0 投票
1 回答
1652 浏览

php - 如何传递参数以从 phpspec 构造?

如果我有

它工作得很好,但我实际上如何将参数传递给构造?它仅在我有一个没有传递给它的参数的构造并在构造后使用设置器时才有效。没有办法正常构建吗?

我试过查找这个,但所有示例都使用不带参数的构造。谢谢。

0 投票
1 回答
1410 浏览

php - PHPSpec 和 Laravel

如果我无法访问或使用任何 Eloquent 方法,那么使用 PHPSpec 有什么意义?

例如:($this 指的是 EloquentProduct模型)

这在方法中不起作用,addProperty并且removeProperty调用了各种 Eloquent Collection 和 Model 函数,似乎 PHPSpec 无法处理这个问题,即使所有这些类都包含在use语句中。

我注意到 Jeffery Way 在 Laracasts 上的屏幕投射中,他从不使用真正的 Eloquent 模型。他只使用普通的 PHP 对象。那有什么意义呢?那不是真实的世界。

这也与正确引用雄辩的模型类无关,因为我已经这样做了use Illuminate\Database\Eloquent\Model;

此外,我从不使用外墙。所以它也不是。

0 投票
1 回答
1357 浏览

php - 使用 PHPSpec 时如何使用类接口

使用 PHPSpec 进行测试时,如何使用注入到我的方法中的类接口而不是实际的具体类?

例如,我有一个Product将 aVariationInterface注入方法的类:

尽管由于 PHPSpec 没有要绑定VarientInterface的IOC 容器,Varient但我无法真正测试我的类。

编写接口而不是具体类不是最佳实践吗?

0 投票
1 回答
229 浏览

php - 使用 PHPSpec 和 PHPUnit 进行应用程序测试

是否可以使用两种不同的测试方法?例如 PHPUnit 和 PHPSpec 在一个应用程序或包中?

有没有人有任何指导?

0 投票
1 回答
2249 浏览

php - 使用 PhpSpec 和 Prophecy 模拟问题

我正在尝试测试我使用的方法PhpSpecand Prophecy。不过,我在让它工作时遇到了一些麻烦。我不想为模拟使用实际值,所以我使用了Argument::any(),但它似乎想要在方法内执行实际调用。我认为这是模拟要防止的?

我的课:

我的测试:

我回来的错误是:

错误:传递给 Double\Illuminate\Validation\Factory\P2::make() 的参数 1 必须是数组类型,给定对象,在 /Users/will/development/personal/blog/app/Blog/Service/Laravel 中调用/CreatePostValidator.php 在第 32 行并在 /Users/will/development/personal/blog/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php(49) 中定义:
eval() 的代码第 10 行