问题标签 [mockery]

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 回答
560 浏览

php - 使用模拟,你如何在模拟上创建一个方法期望一个特定的 DateTime 对象

我围绕 laravel 4 的查询构建器构建了一些功能,为了测试某个部分,我需要执行以下操作:

问题是,每当我这样做时,嘲弄试图将其转换为字符串,我得到错误:

我该如何解决这个问题?

(我正在使用phpunitmockery进行测试)

0 投票
2 回答
664 浏览

phpunit - 模拟时如何确保方法存在于真实对象中?

如果我使用 Mockery 模拟接口并将 shouldReceive 与不存在的方法一起使用,我希望我的测试失败。环顾四周没有帮助。

例如 :

带接口:

和一个测试用例:

测试将通过。

现在,重构时间,bar 方法在一个地方不需要(假设它在多个地方都需要)并且从接口定义中被抑制,但测试仍然会通过。我希望它失败。

是否可以使用嘲弄来做这样的事情(并且能够用类而不是接口做同样的事情)?或者是否存在使用其他工具或测试方法的解决方法?

不确定是否可以按原样理解,如果需要,将尝试对问题进行更清晰的描述。

0 投票
2 回答
2545 浏览

php - Laravel 4 单元测试:使用 App::instance 注入模拟时出现“标头已发送”错误

我是 Laravel 和 IoC 概念的新手。我正在关注 Nettuts 上的精彩教程(http://net.tutsplus.com/tutorials/php/testing-laravel-controllers/)并且能够成功测试我的控制器。但是我想通过模拟数据库来隔离控制器。一旦我尝试将我的模拟对象注入到 IoC 中,我就会收到以下错误:

无法修改标头信息 - 标头已发送(输出开始于 /Users/STRATTON/Dev/SafeHaven/vendor/phpunit/phpunit/PHPUnit/Util/Printer.php:172)

它所指的行使用“打印”构造输出 PHPUnit 的缓冲区。某些东西导致在设置标头之前发送输出,但我无法找到问题所在。

当控制器调用真实模型并进行数据库调用时,我能够成功运行所有测试。同时,我能够成功地模拟对象并毫无错误地进行模拟。但是,一旦我尝试使用 App::instance() 注入模拟对象,就会出现错误。

我还用 PHPUnit 的模拟测试了这个并得到了相同的结果。我是否正确地模拟了对象?我有命名空间的问题吗?我错过了输出内容的东西吗?

控制器:

测试用例

0 投票
1 回答
214 浏览

eclipse - 使用 pear 和 PHPUnit,eclipse 看到 PHPUnit 而不是 Mockery

我已经安装了 Pear 并使用 Pear 来安装 PHPUnit 和 Mockery。我在 elipse 中成功运行了 PHPUnit(pear 目录配置为项目中的包含路径)。

我想使用 Mockery 但 eclipse 一直给我这个错误:

PHP Fatal error: Class 'deepend\Mockery' not found

我在这里遵循了建议:http: //pkp.sfu.ca/wiki/index.php/Configure_Eclipse_for_PHPUnit 但不确定如何加载库。这是我的代码:

请参见函数 define_ci_mock 的第一行。这是调用 Mockery 但未找到的地方。你能为我指出正确的方向吗?我已经安装了 Mockery 0.8.0

0 投票
2 回答
5578 浏览

php - PHP 单元测试和 Mocking 与 Mockery

这可能是我对嘲笑的误解。我真的很感激解释为什么嘲笑一个不存在或存在的类是一件好事?

示例场景:假设我们有一个类依赖于第二类的输出,并且我们更改了输出格式或其他任何东西。尽管它们在头等舱中已经过时,但这难道不会使我们的测试保持成功吗?

0 投票
1 回答
455 浏览

php - 测试一个调用 parent::function 的类?

我有一个重载where功能的模型。

我的重载方法如下所示:

现在使用 phpunit 和 mockery 我正在尝试测试这个类,我需要测试我重载的 where 函数,我真正关心的是传递给的值是什么parent::where()

我的问题是,是否有可能/我将如何模拟父类以便我可以做到

0 投票
1 回答
941 浏览

php - 用嘲讽的方式测试 __call()?

我的班级中有一个非常基本的功能,正如评论所说的那样,它只是将调用转发给子模型,如果它们在这个类中不存在。这在我的测试中非常有效。

但是我也想为此编写单元测试,在这种情况下我尝试编写的测试:

然而,这吐出了下面可爱的错误:

1) EloquentUserProviderTest::testProviderAsksModelToFind BadMethodCallException: Method Webfox\Guardian\User\Guardian\Provider::find() 在这个模拟对象上不存在

那么,我该如何解决这个问题,以便我的测试通过?

0 投票
2 回答
5311 浏览

phpunit - 在单元测试中模拟时找不到 Laravel 外观类

我可能在这里遗漏了一些东西,但我有一个非常简单的帮助类来创建一个目录:

以及相关的测试:

但是,运行测试时出现致命错误:

PHP 致命错误:在 /my/app/folder/app/tests/lib/myapp/helpers/FileSystemHelperTest.php 中找不到类“文件”

我查看了模拟外观的文档,但我看不出哪里出错了。有什么建议么?

谢谢

0 投票
1 回答
1000 浏览

php - 嘲弄测试构造函数调用,新关键字

我有一个类名作为字符串属性。一种方法 ( fetchObject) 创建此类的新实例。我想用 PHPUnit 和 Mockery 测试这个方法。

那是代码

我尝试过这样的事情

测试有效,但我不确定它是否检查构造函数调用,我不知道如何检查参数是否通过。

0 投票
2 回答
632 浏览

unit-testing - Mockery - 在构造函数中创建一个模拟

有没有办法在测试类构造函数/类 setUp 函数中创建一个模拟,以便所有测试方法都可以使用模拟?

我尝试在构造函数中创建,例如:

但这不起作用。如果第一个测试通过,那么所有在模拟上断言的测试都会通过,即使它们应该失败(即运行应该失败的 shouldReceive)。有任何想法吗?