问题标签 [laravel-testing]

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 投票
3 回答
2323 浏览

laravel - 升级到 5.4 后在 Laravel BrowserKit 包中找不到 PHPUnit\Framework\Constraint\Constraint

我正在将一个旧的 Laravel 个人项目从 5.2 升级到 5.4。升级到 5.3 似乎没问题,但现在我要升级到 5.4,但遇到了问题。

该项目使用旧的测试层,所以我安装了BrowserKit测试包以保持向后兼容性。我还为 Browserkit 测试创建了以下基本测试用例:

使用普通测试用例的模型测试工作正常,但是当我运行任何使用 BrowserKit 测试用例的测试时,我看到以下错误消息:

谷歌对此并没有太多用处,错误消息也不是很清楚。这似乎与命名空间有关,因为该类PHPUnit\Framework\Constraint\Constraint似乎不存在,但我不确定如何解决该问题。我已根据需要将 PHPUnit 的版本升级到 5.7,但这并不能解决问题。谁能提出问题可能是什么?

编辑:只是想尝试将版本降级到 1.0,这似乎解决了现在的问题,所以也许 2.0 版旨在与 PHPUnit 6 一起使用?不过,希望这篇文章将来能帮助别人。

0 投票
1 回答
8173 浏览

laravel - Laravel 测试:调用未定义的函数 App\Http\Controllers\get()

我正在阅读 Laravel 教程并遇到“调用未定义函数”错误。到目前为止,我有 20 个测试和 28 个断言,只有这个测试失败。我找不到我的错字。请告诉我我必须添加哪些源代码。我是 Laravel 的新手。

一定有错别字,但我找不到。

ReadThreadsT​​est.php

网页.php

频道.php

线程控制器.php

线程.php

0 投票
1 回答
9315 浏览

php - 测试队列功能?

根据Laravel 文档,我可以使用Queue::fake();防止作业排队。

尚不清楚如何在未排队时测试(PHPUnit)作业类中的一些方法。

例如:

这是我要测试的示例deleteAllFiles()- 我需要模拟它吗?

0 投票
1 回答
1771 浏览

php - 通过模拟依赖来测试 Laravel 自定义包

我仍在学习 Laravel 和依赖注入。我理解这个概念,但我不知道如何在这种特定情况下模拟依赖项:

MyController.php

MyServiceProvider.php

因此,如您所见,我有一个需要 ServiceInterface 实例的控制器。该实例正在 ServiceProvider 中解析。ConcreteService 的构造函数需要客户端向 API 执行 Http 请求。这个 Http 正在由 Service 容器解析(它将是 Guzzle 的一个实例)。

现在,我如何在我的测试中模拟这个 Guzzle 实例?

理想的结果是做这样的事情:

我的测试.php

因此,在我的测试中,我只需要点击将使用 MyController.php 的特定方法的路线,但我不需要“真正的”Guzzle 实例。我只需要模拟响应以测试 MyController 是否以预期方式运行(并将内容正确存储在数据库中)。

如何指示服务容器仅在测试期间注入模拟对象?还是我以完全错误的方式这样做?

任何帮助将不胜感激。

提前致谢

0 投票
1 回答
946 浏览

phpunit - 设置方法不起作用 laravel 5.4

我的集成测试在没有设置方法的情况下工作正常。那就是工厂工作并将数据填充到表中。

但是如果我在 setUp 方法中移动两个工厂,我会收到错误:
InvalidArgumentException: Unable to locate factory with name [default] [App\Channel]

我不明白为什么将工厂移入setUp方法会失败。

谢谢,

0 投票
1 回答
1238 浏览

phpunit - 从控制器返回模型实例到 laravel 中的测试类

我正在使用 Phpunit 在 laravel 中进行单元测试。情况是我必须将模型实例从控制器返回到测试类。在那里我将使用该对象的属性来测试一个断言。我怎样才能做到这一点?

目前我正在将该实例 json 编码到响应中。并以一种有效但丑陋的方式使用它。需要一个更清晰的方法。

这是我的测试课:

这是控制器方法:

正如您在测试类中看到的,我在$created_thread变量中接收到从控制器返回的对象。然而,控制器正在返回一个Illuminate\Foundation\Testing\TestResponse的实例,因此嵌入在此响应中的 THREAD 不容易提取。你可以看到我在做 --> $created_thread-> original ->channel->slug,'thread'=>$created_thread-> original ->id]。但我相信有更好的方法来实现同样的目标。

谁能指导我正确的方向?

0 投票
0 回答
2053 浏览

unit-testing - 响应状态代码 [200] 不是重定向状态代码。无法断言 false 为 true

这是我用于登录的代码 laravel 单元测试

我得到了这个错误

我将状态码更改为 302 但我收到此错误

断言 false 为 true 失败。

我该如何解决这个问题?

0 投票
1 回答
310 浏览

laravel - Laravel 5 PHPUnit 测试 - 将控制器中的所有测试包装到单个事务中

我的 Laravel 应用程序中有以下测试文件:

我正在使用DatabaseTransactions该类将我的测试包装为事务,因此它们不会写入我的数据库。我注意到使用这个类会将我的类中的每个单独的测试包装为一个事务。

我想将整个类包装为一个事务。在上面的示例中,当我测试注销请求时,我需要从登录请求生成的令牌在数据库中持久存在。

我将如何使用 Laravel 做到这一点?

0 投票
2 回答
2213 浏览

php - 在 Laravel 中测试时如何模拟 time() 函数?

我正在使用 Laravel 做一个数学竞赛项目。项目中的所有控制器方法都使用了大量的 time() 函数。

根据当前时间是否在比赛直播时间之间,将问题返回给用户。

在编写功能测试和单元测试时,如何模拟控制器中的 time() 函数,以便在为项目运行测试时设置我想要的时间?

0 投票
1 回答
1094 浏览

php - Laravel 5.6 - how to create a model factory with a vertical table?

I am working on application that is made up of Leads, each Lead -> hasMany -> Fields. My application will accept an infinite amount of whitelisted fields. Some Leads will have a lot of Fields, others will have maybe around 5. Due to this, I've opted for the Field table to be vertical, rather than fit in all the fields I accept horizontally, and then run into MySQL errors down the line (table too wide, etc.)

Here's my structure:

Lead Table

Field Table:

I have created a model factory for my Lead model, that automatically creates 5 random fields using Faker.

I have an array of texts, numbers, dates (etc) fields which my application accepts.

Field Factory:

I've been doing this:

However, I now have a minimum array of Fields which each Lead must have. I have these minimum fields in another config.

Is it possible to automatically create the x minimum Fields on the vertical table, using a factory?

E.g.

Minimum Fields

How can I write a factory to automatically create the following structure:

Edit: and if possible, not insert duplicate field_name values. Not like it's 100% deal breaker, but I want to make sure I 100% know what data I am working with, so checking x number of duplicates I imagine would be a nightmare