问题标签 [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 回答
3120 浏览

laravel - phpspec 和 laravel 设置

我正在建立一个新的 Laravel 项目并集成 PHPSpec。我很难找到一个可以与 Laravel 完美配合的 phpspec.yml 文件的工作示例。与 Rails 中的 RSpec 类似。

我想要的文件夹结构如下

我的 phpspec.yml 目前看起来像这样:

我在 spec/models 文件夹中复制了与模型相关的测试,但是当我“运行 phpspec”时,它不会运行任何一个。我也意识到命名空间不是 Laravel 中的“模型”和“控制器”,可能更像 Eloquent 和 BaseController..

我也在使用这个扩展:https ://github.com/BenConstable/phpspec-laravel

我不确定如何设置它,也找不到任何工作示例。提前致谢!

编辑:来自 Jeffrey Way 的另一个论坛上的建议:

您可以使用 Behat 测试您的控制器。PHPSpec 不能替代它(或 Codeception)。

更新:

从那以后,我决定改用 Codeception,因为它似乎巧妙地集成到 Laravel 中并被广泛使用。

0 投票
1 回答
282 浏览

php - PHPSpec - 检查方法是否返回文件

我是 phpspec 的新手,我正在尝试测试一个方法是否返回一个文件。该方法本质上是:

所以我最初的想法是测试是否getFile()返回一个字符串,因为file_get_contents根据文档返回一个字符串。

所以我的测试看起来像这样:

但是我的测试失败并显示以下消息:

我什至尝试过gettype(getFile()),它返回"string"

谁能告诉我我做错了什么。

0 投票
1 回答
901 浏览

php - phpspec 测试 SplObjectStorage 中是否存在预言对象的问题

谁能向我解释为什么后续测试没有通过?

被测代码

phpspec 测试

0 投票
1 回答
184 浏览

laravel - PHPSpec如何询问一个方法是否返回这个或那个

我有一个查询数据库的方法,如果没有结果,则返回带有结果的数组或 false。

在这种情况下,我需要 PHPSpec 做的就是测试它是否返回一个数组或 false,但我不知道该怎么做。

还是我需要模拟数据库查询并将其从我的方法中分离出来?

0 投票
1 回答
275 浏览

php - phpspec spec_path 位置配置

无法弄清楚这一点,并且文档在这种情况下并不是特别有用。

我有一个这样的包结构:

我试图实现的是每个测试套件都应该位于它相应的组件目录中。

我的phpspec.yml(位于./phpspec.yml)看起来像这样:

这将不起作用,因为规范是在src/Acme/Foo/Component1/Specs/src/Acme/Foo/Component1而不是src/Acme/Foo/Component1/Specs.

这有可能吗?

谢谢

0 投票
2 回答
1543 浏览

php - PHPSpec 和 Laravel - 如何处理双重方法未找到的问题

当涉及到调用其他方法的存根时,我的规范测试似乎存在问题。

我一直在为我的控制器遵循 Laracasts 的“六边形”方法,以确保它只负责 HTTP 层。

控制器

因此,当路由初始化时,我构造了一个新的 Connect 实例,并将 $this 类的实例传递给我的 Connect 类(充当侦听器)并调用 loginOrCreate 方法。

猿\实用程序\连接

我试图将其精简以专注于测试中的方法以及我对出了什么问题的理解。

连接规范

所以这是我遇到问题的规范。首先,我假装我已经有一个 facebook 令牌。然后,事情失败的地方是我需要捏造 getFacebookUserData 方法将返回一个存在于我的用户表中的示例用户。

但是,当我运行测试时,我得到:

我曾希望 'willReturn' 会忽略 getFacebookUserData 方法中发生的任何事情,因为我正在单独测试它,但似乎不是。

关于我应该做什么的任何建议?

我需要将所有 OAuth 类方法拉到他们自己的类中吗?考虑到 OAuth 已经是它自己的类,我可能需要这样做,这对我来说似乎很奇怪。有没有办法在 getFacebookUserData 中存根方法?

更新 1

所以我尝试对在 getFacebookUserData 中调用的方法进行存根,我更新的规范如下所示:

规范仍然失败,但错误已经改变:

有趣的是,如果我将这些新存根放在 $this->getFacebookUserData 存根之后,那么错误是“未找到”而不是“未定义”。显然我不完全理解手头的内部运作:D

0 投票
1 回答
683 浏览

php - Behat SpecBDD 和 StoryBDD 基本特色 symfony2 示例应用程序

我开始学习 PHP 中的行为驱动开发工具,例如 SpecBDD 和 StoryBDD 以及 Symfony2。

这些工具的官方文档非常好,但对我来说还不够开始学习(我希望其他初学者也能学习这个主题)。

那么...是否有任何基本功能(我的意思是基本用户身份验证/授权、任何其他模型的基本 crud 和一些静态页面)使用这些工具开发的 symfony2 示例应用程序?

例如,我想知道如何为表单类型和其他 symfony 的东西编写 phpspec

0 投票
2 回答
1183 浏览

php - 如何在 phpspec 的类中测试父调用方法

我有一个带有父调用方法的类。我想确保已调用父级,以便当我编辑测试方法并删除该行时,它会失败测试

我的课:

我的测试(规格):

那可能吗?

0 投票
1 回答
452 浏览

php - 使用 phpspec 访问原始模拟类

我有一个使用存根协作者的类的规范。现在在我的班级(比如 A 类)中,我对协作者类名(比如 B 类)进行了一些操作,以将其自己的类名转换为对班级有用的名称。问题是:规范中的 stubbed collaborator "class B" 不是真正的类,而是一个预言对象。我无法控制我正在模拟的对象,因为它位于第三方库中,我无法从中提供 getName() 或 getSignature。

有没有办法提取在预言对象中加倍的原始类?

0 投票
1 回答
3978 浏览

laravel-4 - 测试 Laravel 4 应用程序的第一枪(PHPSpec/BDD 与 PHPUnit/TDD)

我已经为这个问题纠结了太久了。我知道我只需要跳入其中一个或另一个,因为它们显然都是可行/有用的工具,但已经被困在栅栏上,研究了两个星期。

PHPUnit vs. PHPSpec - 哪一个可以带来更好的长期可维护性和编程实践?

我已经与几位经验丰富的 PHPUnit -> PHPspec 转换/用户交谈过,他们现在对 PHPspec 发誓,声称由于其 BDD 方法,它促进了更好的设计。但是,由于它是一个更新的工具,因此与 PHPUnit 相比,它缺乏社区/教程。

目前,我的 PHP 开发主要围绕 Laravel 4 开发。

PHPUnit 基本上融入了 Laravel 框架,看起来这可能是更容易的选择,但我真的很喜欢 PHPSpec 的 BDD 方面。但是,PHPSpec 似乎不想与 Laravel 的外观设置很好地配合使用(我还发现这可能是一个在可能的情况下避开的好习惯)。

我真正的难题是,其中哪一个更有可能成功地集成到现有的 Laravel 4 项目中,现有的测试覆盖率为零。

在将 PHPUnit 和 PHPSpec 集成到现有项目中时,我有一个早期/简短的尝试,但实际上只是不确定从哪里开始编写初始测试并最终暂时放弃它们。

我真的想弄清楚从长远来看,哪一个更值得投入一些时间。

任何经历过两者的人的任何资源/见解都将不胜感激。