问题标签 [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 投票
1 回答
8208 浏览

php - Laravel 测试 - 用 Mockery 抛出异常

我对 Laravel 和一般的单元测试非常陌生。我正在尝试为我的 AccountController 编写一些测试,但遇到了障碍。

我正在使用 Sentry 来处理站点中的用户和组。我正在尝试测试我的控制器是否正确处理了 Sentry 引发的异常。所以我处理登录 POST 的控制器方法如下所示:

authRepository 只是一个使用 Sentry 处理身份验证的存储库。现在我想测试当未指定电子邮件地址时,会引发 LoginRequiredException 并且用户会看到错误消息。这是我的测试:

但是,测试没有通过。由于某种原因,它吐出的只是:

我是否错误地使用了 andThrow() 方法?如果有人能对正在发生的事情有所了解,将不胜感激。

提前致谢!

0 投票
1 回答
837 浏览

unit-testing - 具有依赖和部分模拟 PhpUnit 的测试方法

我在测试这个简单的方法时遇到了一些问题。

我使用属于要测试的类的方法检查是否存在对话,然后使用依赖项的方法删除该对话。

问题是我无法弄清楚在我测试方法 remove 后如何传递模拟的依赖项,因为我已经模拟了主类以测试传递它的依赖项以确保该类是部分模拟的。

这是我原来的方法

我的测试给了我一个错误:

test_remove_fan_from_db 试图获取非对象的属性

我猜是因为。我在测试依赖项的删除方法之前部分模拟了主类,但我认为没有其他方法可以部分模拟主类“团队”来测试检查方法。但是然后我必须将测试的删除方法传递给该类。如何?

0 投票
1 回答
1040 浏览

laravel - 测试路线调度

我有一个 API,其场景将请求转发到另一个控制器。

IE:

我将如何编写测试以验证此调度是否按预期进行?(我知道我不应该嘲笑“请求”门面)

IE:

0 投票
1 回答
7682 浏览

php - Laravel 依赖注入:什么时候需要?什么时候可以模拟 Facades?两种方法的优点?

我已经使用 Laravel 有一段时间了,并且我已经阅读了很多关于依赖注入的可测试代码。在谈论 Facades 和 Mocked Objects 时,我感到困惑。我看到两种模式:

这是我的帖子模型。我可以跑去Post::all();获取我博客中的所有帖子。现在我想将它合并到我的控制器中。


选项#1:依赖注入

我的第一直觉是将Post模型作为依赖注入:

我的单元测试看起来像这样:

选项#2:外观模拟

我的单元测试看起来像这样:

我理解这两种方法,但我不明白为什么我应该或何时应该使用一种方法而不是另一种方法。例如,我尝试在Auth类中使用 DI 路由,但它不起作用,所以我必须使用 Facade Mocks。对此问题的任何钙化将不胜感激。

0 投票
1 回答
346 浏览

php - php Mockery在输入函数方法时抛出意外的“必须实现接口”异常

我正在使用 Mockery 对一个公认的边缘案例进行单元测试。它失败了,我认为它不应该失败,所以 Mockery 中可能存在错误。

考虑一个具有方法的对象。该方法有一个参数签名,其中第一个参数是类型提示的,默认为 null。第二个参数没有默认值。

当以 null 作为第一个参数的对象调用该方法时,它可以正常工作。当在第一个参数为 null 的 Mocked 对象上调用该方法时,它会失败。

请在此处查看示例代码:https ://gist.github.com/awei01/9278119

0 投票
1 回答
1332 浏览

unit-testing - 嘲笑 Laravel 雄辩的水合关系

每次我尝试测试一个包含存储库的类时,我都会遇到同样的问题:

如果一个 Eloquent 类在执行查询后“水合”受保护的数组关系属性,理论上我可以用模拟集合/结果集填充这个属性,所以在我的测试中我说类似$user->profiles(不带括号的属性)我可以检索我的模拟数据并轻松测试模型。

我的问题是:有没有办法让 Mockery 调用该__call方法而不发出“找不到属性”错误消息?

到目前为止,我实现的唯一方法是将属性直接应用于模拟对象。这种方法的问题在于,如果数据是从存储库中读取的,我无法断言

如果您需要一个示例,我可以更新问题,但我认为我已经很明确了;)

此致

0 投票
2 回答
664 浏览

php - 避免 Redirect::back 嘲讽

我只是想写一些关于 Laravel 4 密码提醒的测试:

我想避免执行此操作:

我试过了:

我得到了错误:

PHP致命错误:在非对象上调用带有()的成员函数

我发现了当调用有参数时如何适应嘲弄,但没有发现如何避免这个问题。

谁能帮我?

0 投票
1 回答
1069 浏览

php - 嘲弄似乎无法正常工作

我正在尝试使用 Mockery 来确定我的控制器是否被正确调用。

我从我的测试用例中调用该函数并且该方法正确返回。然而,嘲弄似乎没有抓住那个电话。

我尝试使用 $this->call 和 $this->client->request 进行通话。两个调用都返回结果,所以 Mockery 应该计算对控制器的调用。

错误:

0 投票
1 回答
68 浏览

php - 不确定我是否正确使用了嘲弄

我第一次与嘲笑/嘲笑作斗争,我不确定下面的测试是否真的触及我的代码,或者只是测试我所做的模拟?此外,我意识到尽管它的名称如此,但这段代码并不适合存储库模式。我会努力解决这个问题。

班上:

我的测试:

这是测试我的课程的正确方法吗?或者这是对嘲弄/嘲弄的不正确使用?

0 投票
1 回答
1538 浏览

php - 在 Laravel 中对闭包进行单元测试

下面代码中的闭包使得这段代码很难测试。我怎样才能继续急切地加载这些项目并保持完整的可测试性?

我已经看到使用 Mockery 使用 of Mockery::on(),但考虑到数组,我认为这没有用。