问题标签 [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.
php - 致命错误:在 PHPSpec 上模拟时调用成员函数
这是我要测试的代码
这是我的测试代码
这是错误
我的问题是为什么我会收到这个错误,因为我已经在我的测试中模拟了哨兵?
testing - PHPSpec中返回数组的测试内容
假设我有 RuleFactory 的这种方法:
我想测试返回数组是否包含 Rule 元素。这是我的测试:
但这不起作用,它会在 PHPSpec 中引发错误。
奇怪的是,我可以在其他返回数组的方法上很好地做到这一点,但由于某种原因,我不能在这里做到这一点。
我得到的错误是这样的:
如何在不创建自己的内联匹配器的情况下测试此返回数组的内容?
php - 如何使用 PHPSpec 和 Laravel 插入示例数据
我将环境更改为使用 sqlite 作为驱动程序在 basespec 上进行测试并存储在内存中。
每当我运行测试时,如何将信息插入测试数据库?现在测试失败了,因为它总是返回 false;
php - 如何使用 phpspec 有条件地检查对象?
我刚开始学习phpspec,我有一个问题。好的,您可以检查一个值是否等于某个其他值,如果您想查看某个值是否介于某些值之间,您可以创建一个如下所示的匹配器:
并进行类似的测试
但是你怎么能做有条件的呢?假设some_method()
返回的值是 1,我们如何让 phpspec 查看正在测试的对象的另一个属性?
我正在做一个简单的骰子课。我希望每个掷骰子都返回并排列掷骰子的值和状态。如果掷骰子是最小值,则状态应该是“critical_miss”,如果掷骰子是最大值,状态应该是“critical_hit”。
所以,我想测试一下...
掷骰子。如果掷骰值为 1,掷骰值应介于 1 和 6 之间,掷骰状态应为“critical_miss” 如果掷骰值为 6,掷骰状态应为“critical_hit”
你能在phpspec中做这样的测试吗?
谢谢
php - phpspec,Doctrine:测试是否在实例化对象上设置了参数
我正在尝试开始使用 PHPSpec,但我碰壁了。为了在我被赋予使用的现有代码中模拟正确的东西,事情变得有点复杂,但本质上我的问题涉及测试在刚刚创建的对象上发生的事情。
我有RepositoryFactory
一个createRepository(EntityManager $em, $entityName)
DoctrineEntityManager::getRepository($entityName)
只是调用RepositoryFactory::getRepository(EntityManager $em, $entityName)
,如果存储库不存在,那调用RepositoryFactory::createRepository(EntityManager $em, $entityName)
因此,在我的测试中,存储库是从RepositoryFactory::getRepository
.
现在,在孤立测试的答案开始出现之前,我意识到了这一点。我首先开始尝试编写对字段设置的检查,MyRepositoryFactory::createRepository
但出现了同样的问题——如果我在 中制作对象createRepository
,那么我没有可以使用 shouldBe/shouldHaveBeenCalled 进行测试的模拟。但是我正在尝试在这里做正确的事情,所以如果这是我测试的错误地方,我宁愿重构很多而不是通过一个hacky测试。
编辑:这是正在测试的实际位
上面的 $repo 应该在这里被嘲笑;parent::getRepository
==> RepositoryFactory::getRepository
==>RepositoryFactory::createRepository
此外,我知道测试进入了if($flag)
块,但里面的代码不起作用。$this->getField()
正常工作并返回,但$repo->setField
仍收到 null。$repo->setField($field)
是一个没有时髦逻辑的普通二传手。
travis-ci - 通过 travis-ci 运行 phpspec
我正在尝试通过 travis-ci 运行 phpspec。
规范在我的本地机器上运行良好,但在 travis 上找不到 phpspec 文件。
我的 travis.yml 看起来像这样:
语言:php
我的作曲家是这样的
关于如何使其工作的任何想法?
phpspec - 接受 phpsepc2 模拟中的所有参数
我如何使用#phpspec2 接受函数模拟中的所有参数?
例如我有这样的代码:
我不想模拟所有可能的参数,它应该接受每个实体。
exception - 如何使用 phpspec2 捕获异常
我试图用我的规范捕捉异常,但我不能让它工作。这是我的代码:
我做错了什么?
unit-testing - 再次对 PhpSpec 存根和模拟感到困惑
我目前正在构建一个 Laravel 5 应用程序,并且对如何在 PhpSpec 中模拟事物感到困惑。
我正在构建一个时间表时间验证器,它需要根据所有当前时间表检查预期的时间表,并查看是否有任何重叠(事件不允许重叠)。
我需要提取有问题的时间表,以便我可以针对它们进行测试。目前,这是一个非常基本的 whereBetween 查询,但它会变得更加复杂,因为还会有重复的时间表来检查。
所以这是我的精简课程。我真的只是想测试 doesNotOverlap 函数。
这是我的规格
如果我这样运行它,我会得到:
我尝试(如您所见)各种注释掉的东西来模拟 $schedule 将返回的内容,但这似乎不起作用。
所以我想我想getSchedulesBetween
在类中模拟受保护的方法,但是做这样的事情是$this->getSchedulesBetween($arg, $arg)->willReturn(blah)
行不通的。
我是否需要将 getSchedulesBetween() 拉出班级并将其移至另一个班级,然后对其进行模拟?或者我是否需要将 $this->schedule->blah 推入 dotNotOverlap 方法,以便模拟 $schedule 将返回的内容?
我不想实际测试 App\Schedule Laravel 模型 - 我只想模拟它返回的内容,并将硬编码将运行的各种查询以获得不同的模型结果。
在这里结束了漫长的一天,所以大脑有点晕眩。
2014-10-23 更新
所以我在我的 Schedule 模型上创建了一个范围
然后创建了一个新的 App\Helpers\ScheduleQueryHelper 实例化 App\Schedule 作为变量并添加了这个方法:
然后更新我的规格做
回到我的 ScheduleTimesValidator 类
现在 PhpSpec 正在嘲笑其他类。然而,这似乎是一种非常迂回的做事方式。
unit-testing - PhpSpec 预期调用准确
我有一个我试图在 PhpSpec 中测试的 Laravel5 应用程序的方法,但它一直抛出以下错误:
该方法传递了一个数组,我想模拟模型的 getChurchTimezone 方法返回一个时区。
方法:
在我的其他规范中,我经常做类似的事情$double->method('someArgument')->willReturn('blah')
,但由于某种原因,这种特定情况不起作用,我对为什么感到困惑。
我试过给它一个数组的副本,我试过直接给它一个整数,我试着把 $this->church->getChurchTimezone 拉到它自己的方法中,然后给它一个数组或一个整数,但无论如何PhpSpec 总是以“准确”的方式返回预期的调用错误。
规格:
这是我的应用程序中其他地方的另一个规范示例,它使用相同的方法并通过