问题标签 [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 - 模拟静态 Eloquent 模型方法,包括 find()
我一直在关注一般的 Mockery 和 PHP-Unit 教程——包括 Jeffrey Way 对使用 PHP-Unit 和 Mockery 测试 Laravel 的介绍。但是,对于这个应用程序 - 我们对 Eloquent 的依赖很好,并且宁愿不创建存储库类。
我们能够很好地模拟 Widget 模型的实例方法。但是,我们正在使用 Route:model 绑定,我承认在测试控制器的 show($widget) 方法时,我不确定如何模拟模型的 find() 方法。
我已经阅读了https://github.com/padraic/mockery/wiki#mocking-public-static-methods文档,并看到可以在要模拟的类前面放置一个“别名”前缀。但我似乎也无法让它发挥作用。
这里是 routes.php...
这是(缩短的)控制器......
这是测试夹具。
testShow 方法的错误是:调用未定义的方法 Widget::find()
想法?
laravel - Codeception sqlite:Laravel 4 中针对 Mockery 的内存
我注意到 Codeception 有sqlite:memory
. 在这种情况下,我应该选择退出Mockery吗?
我的理解是 Mockery 使测试能够避免命中数据库。通过上面提到的 Codeception 选项,我可以使用示例数据为数据库播种并在内存中命中它。
当我将它与 Selenium2 和 PhantomJS 放在一起时,一些测试在 Laravel 4 中从 15 秒缩短到 1 秒。
unit-testing - 使用 Mockery 进行 Laravel 控制器测试
我尝试在 laravel 中用嘲弄来测试我的控制器动作。我已经在这里阅读了本教程:
http://culttt.com/2013/07/15/how-to-structure-testable-controllers-in-laravel-4/
我在构造函数中使用 DI,如下所示:
我的问题是我的控制器中的以下代码:
我正在尝试将 Mockery 用作模拟框架。我的问题是如何模拟 $this->sentry->getUserProvider() 之类的调用(Cartalyst Sentry 是一个高级授权包)。为了模拟我写的用户模型:
知道如何模拟 Userprovider 或者我应该以其他方式处理吗?如果我根据 id 获取用户详细信息,我想测试我的 UserController。
php - Mocking models with a relationship in Laravel
I'm attempting to create a Mockery of CustomObject
then chain the retrieval of OtherObject
onto it using something identical to
I can't seem to figure out how to mock this ->get()
at the end there. I'm mocking both of those models in my constructor method ['Eloquent', 'OtherObject', 'CustomObject']
. If I remove the ->get()
everything runs smoothly and my tests pass (aside from the php errors the view is then giving me, but those don't matter if the test is working correctly).
What I currently have is this:
What should I be doing to mock this?
Edit: I have specifically attempted ->andReturn($this->mock)
which only tells me that on the mocked object there is no get method.
php - 嘲笑没有从存储库(接口)调用方法
我正在尝试用这个测试来测试我的控制器(如果这很重要,我正在使用 Laravel):
按照这些教程http://culttt.com/2013/07/08/creating-flexible-controllers-in-laravel-4-using-repositories/ http://culttt.com/2013/07/15/how-to -structure-testable-controllers-in-laravel-4/我使用存储库来避免将我的数据库耦合到测试。所以我有这两个额外的课程:
当我运行测试时,我得到这个错误:
有 1 个错误:
1) ProjectControllerTest::testIndex Mockery\Exception\InvalidCountException: 来自 Mockery_2143809533_Dumminvoicing_Storage_Project_ProjectRepositoryInterface 的方法 all() 应准确调用 1 次,但调用 0 次。
控制器的 index 方法在浏览器中运行良好:
那么为什么它在测试中失败了呢?为什么不调用“全部”?
testing - 如何使用 Mockery 测试使用 Ardent 模型的控制器?
我正在尝试在 Laravel 控制器中测试此功能:
我的(错误的)测试如下所示:
问题是,基本上,当验证失败时,Ardent 将 $project 设置为 false,但它也会在同一个对象上设置错误,可以使用 ->errors()->all() 检索这些错误。
我很迷茫,试图找出在模拟中返回什么。
注意:构造函数注入模型:
php - mockery->shouldReceive() 什么时候不应该通过?
我正在使用 phpunit 和 mockery 在 laravel 中学习单元测试。我目前正在尝试测试 UsersController::store()。
我正在嘲笑用户模型并使用它来测试索引方法,这似乎有效。当我取出 $this->user->all() 测试失败并且它通过时。
在测试 store 方法时,虽然我使用模拟来测试用户模型是否收到 validate() 一次。store 方法为空,但测试通过。为简洁起见,我省略了课程中不相关的部分
用户控制器测试.php
unit-testing - 即使调用 withAnyArgs(),laravel phpunit 模拟方法也需要一个数组?
下面是我的控制器类和相关方法以及我的测试类和相关测试。当模拟方法 $this->user->update() 运行时,我收到此错误
除非另有定义,否则模拟方法不应该接受我发送的任何参数吗?即使我将模拟对象方法更改为包含 with(m::type'string') 我也会收到相同的错误。最终,第一个参数将是一个字符串,第二个参数将是一个数组,但我什至无法做到这一点。
用户控制器.php
用户控制器测试.php
php - Laravel 4 (Mockery) 中的模拟回调
我目前正在为 Laravel 4 中的包编写测试。
我在嘲笑Illuminate\Database\Query\Builder
它几乎一直有效,除了当where
方法使用回调时,我无法检查回调中的方法是否被调用。
我希望你们中的一个人能有所启发。
where
以及应该调用的实际方法orWhere
。注意:该构建器模拟被传递给下面的类。
然后调用$builder->filter()
which 包含以下代码。
主要部分是底部位$query->orWhere
,PHPUnit 测试每次都失败,因为它orWhere
甚至一次都没有运行。在您说它可能无法执行之前continue
,我传递的数据将允许这样做。
我怀疑这是因为我一开始就嘲笑这个where
方法。如果我exit
在它之前包含一个foreach
它不会执行,表明它甚至没有在回调中运行任何东西。我知道这是默认行为,但如何让 Mockery 运行相同/相似的回调?
我尝试过使用部分模拟,使用shouldExpect
但不完全理解它。我也尝试过四处搜索,但这种情况没有运气。
如果我能学习如何在回调中使用嘲弄,那就太好了。