问题标签 [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.
php - 无法模拟 Model::where() 并阻止测试查询数据库
在我的控制器中,我使用MyModel::where(...)
的是在我的一项测试期间调用数据库。我以为我可以用以下内容重载它,但它仍在查询数据库。我可以做些什么来确保我的测试仍然需要::where
被调用但返回一个模拟模型,以便我可以继续测试这个控制器方法的其余部分?
php - 如何深度模拟支持链接方法的类
我正在尝试对我拥有的控制器进行单元测试,$this->library->client->changeLog->create()
我想知道是否需要模拟这些属性中的每一个,或者我是否可以以某种方式进行深度模拟$this->library
,这样我就不必模拟一长串对象并且还必须担心它们的构造函数参数。我现在正在尝试模拟一条链条,它非常丑陋,而且效果不佳。
我也尝试过$this->library->shouldReceive('client->changeLog->create')->once()->andReturn(true);
,但它导致“试图获取非对象的属性。
有没有一种简单的方法来测试具有一些属性的方法的输出?
php - Laravel 控制器测试,处理重定向
我有一点问题,下面的代码来自我正在测试的控制器中的一种方法。
场景是,您保存了一条记录,然后您将自动定向到“查看”该记录。所以我在保存到重定向时传递了项目ID......
但是,在运行测试时,如果我直接传入对象的 id,则会收到“ErrorException: Trying to get property of non-object”。所以围绕我做通过测试的工作是一个三元条件,看看输出是否是一个对象......当然必须有更好的方法来做到这一点?
我正在使用 Mockery,并为 Projects 模型创建了一个模拟类/接口,该模型被注入到 Projects 主控制器中。
这是方法:
这是测试重定向路由的测试。
php - Laravel - 输入未通过单元测试
运行单元测试时,我收到以下错误。似乎它不喜欢将 Input::get 传递给构造函数,但是在浏览器中运行脚本时,该操作工作正常,所以我知道它不是控制器代码。如果我取出任何“task_update”代码,即使使用输入,测试也会通过 find - 所以不确定为什么它接受一种方法的输入。
我的控制器是:
测试是 - 我正在为 task_updates 数组设置输入,但没有被拾取:
php - 在 Mockery 中测试链式方法调用
我正在尝试在控制器中正确模拟对 Eloquent 模型的链式调用。在我的控制器中,我使用依赖注入来访问模型,以便它应该易于模拟,但是我不确定如何测试链接调用并使其正常工作。这一切都在使用 PHPUnit 和 Mockery 的 Laravel 4.1 中。
控制器:
控制器测试:
我一直试图通过将此代码放在$this->action()
测试中的调用之前来实现这一点。
但是,这会导致错误Fatal error: Call to a member function with() on a non-object in /app/controllers/TextbooksController.php on line 28
。
我还尝试了一种链式替代方案,希望它能起到作用。
用 Mockery 测试这个链式方法调用的最佳方法是什么。
unit-testing - Laravel - 测试仓库
我需要测试一个存储库,该存储库具有通过构造函数注入的 Eloquent 模型。
我的问题是当我调用$this->model->value_products
(或任何属性)时。Eloquent 模型尝试调用模拟模型setAttribute
中不存在的方法。如果我模拟此方法,我将无法正确设置属性,并且我的测试断言将失败。
这是我的测试:
对此有什么想法吗?
unit-testing - 使用 Mockery 测试 Laravel 控制器的问题 | 试图获取非对象的属性
我对测试控制器非常陌生,并且遇到了方法()的问题。我相信我要么在测试中遗漏了一些东西,要么我的控制器/存储库设计不正确。
我正在编写的应用程序基本上是那些安全的“一次性”工具之一。在您创建笔记的地方,系统会为您提供一个 URL,一旦检索到该 URL,该笔记就会被删除。我实际上已经编写了应用程序,但我要回去编写练习测试(我知道这是倒退的)。
我的控制器:
我已经将我的 Note 接口注入到我的控制器中,一切都很好。
我的测试
我得到的错误
第 24 行是指在我的控制器中找到的这一行:
基本上我的抽象存储库方法 delete() 显然找不到 $note->id 因为它在测试环境中确实不存在。我应该在测试中创建一个注释并尝试实际删除它吗?或者那应该是一个模型测试?如您所见,我需要帮助,谢谢!
-----更新-----
我试图存根存储库以返回一个 Note 对象,正如 Dave Marshall 在他的回答中提到的那样,但是我现在收到另一个错误。
我的存储库中确实有一个 delete() 方法,当我在浏览器中测试我的路由时,我知道它正在工作。
php - 使用 mockery 对具有依赖关系的类进行单元测试
我是测试新手,我正在尝试创建一个单元测试,涵盖 NewsCreator create 方法中的第一个 if 语句。
这个问题有两个部分。
第一:我应该如何实例化 NewsCreator 来处理模拟的验证器和存储库?
第二:测试这条路径的正确方法是什么?
这是我的控制器方法,它调用需要测试的类:
这是我想测试的类,NewsCreator:
这是我尝试编写的测试,但失败并出现异常:
2) WHS\Portal\Tests\News\NewsCreatorTest::test_failed_validation Mockery\Exception\InvalidCountException: Method fails("foo") from Mockery_1_WHS_Portal_News_NewsValidator should be called exactly 1 times but called 0 times.
更新测试:
存根类:
请帮忙。
谢谢。
php - How to get Mockery to work with a demeter chain
I have a Slim application that has some Middleware.
It performs authentication for the route, and retrieves the route like so:
I'm now testing it and am attempting to use Mockery to mock the result of the chained call, so I can effectively specify the route.
This doesn't work. It tries to call: require('lib/demeter/router.php')
and fails as this doesn't exist.
I've also tried:
This doesn't work either, failing with:
What am I missing?
php - Laravel 4.1 - 使用 Phpunit 和 Mockery 测试 Artisan 命令
我正在 Laravel 4.1 中编写我的第一个 Artisan 命令,并希望获得一些关于如何测试它的想法。我的命令做一件事(现在)。它基本上从数据库中删除指定天数的表条目(注释)。
命令示例:
该命令适用于出色的工作。但是我首先出于学习目的编写了该命令,现在我希望通过测试来遵循它。我正在使用 PHPUnit 和嘲弄。
命令代码: http: //pastebin.com/index/dZrxpt8x
如您所见,我正在注入我的 Note 实现(用于抽象),然后我正在执行其中一个方法“deleteNotesOlderThan(int $days)”。就像我说的,这一切都很好,花花公子。当我尝试测试事物时,我的问题就开始了。
命令测试: http: //pastebin.com/6UwxGvcN
如果您查看代码,您可以看到我被困在哪里。如何模拟我的 Note 方法并生成命令测试?另外我应该用这个特定的命令测试什么样的东西?
先感谢您