首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新到Laravel5.4时PHPUnit中的错误,但app中没有错误

更新到Laravel5.4时PHPUnit中的错误,但app中没有错误
EN

Stack Overflow用户
提问于 2017-02-03 20:53:42
回答 1查看 681关注 0票数 0

我正在从Laravel 5.3更新到5.4

我让我的作曲家更新工作正常,似乎我的应用程序是好的。

但是当我使用PHPUnit运行测试时,所有的测试都失败了。

编辑:

现在,基于patricus响应,我安装了browser-kit测试,并在文档上完成了所需的一切。

问题还在发生..。

以下是新的堆栈:

代码语言:javascript
复制
TypeError: Argument 1 passed to Illuminate\Auth\SessionGuard::setRequest() must be an instance of Symfony\Component\HttpFoundation\Request, null given, called in /laravel/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php on line 139

/laravel/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php:768
/laravel/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php:139
/laravel/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php:96
/laravel/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php:70
/laravel/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php:294
/laravel/vendor/sentry/sentry-laravel/src/Sentry/SentryLaravel/SentryLaravelServiceProvider.php:83
/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:678
/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:565
/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:702
/laravel/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:105
/laravel/vendor/sentry/sentry-laravel/src/Sentry/SentryLaravel/SentryLaravelServiceProvider.php:45
/laravel/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:28
/laravel/vendor/laravel/framework/src/Illuminate/Support/helpers.php:912
/laravel/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:86
/laravel/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:30
/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:524
/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:762
/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:745
/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:746
/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php:17
/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:208
/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:160
/laravel/tests/BrowserKitTest.php:24
/laravel/vendor/laravel/browser-kit-testing/src/TestCase.php:95
/laravel/vendor/laravel/browser-kit-testing/src/TestCase.php:70
/laravel/tests/functional/RoundRobinTreeTest.php:22

这是我的RoundRobinTest:

代码语言:javascript
复制
class RoundRobinTreeTest extends BrowserKitTest
{
....
} 

在我的“测试”文件夹中,我将旧的TestCase.php复制到BrowserKitTest.php。

代码语言:javascript
复制
    use Laravel\BrowserKitTesting\TestCase as BaseTestCase;


abstract class BrowserKitTest extends BaseTestCase
{
....
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-04 06:57:05

Laravel5.4更新了它使用的测试框架。Laravel5.4使用Laravel,而Laravel5.3使用Symfony的browserkit组件。

Laravel5.3的browserkit测试功能被提取到它自己的包(laravel/browser-试剂盒-测试)中,这样您就可以要求包并让您的5.3测试在5.4中工作。Laravel文档中的升级指令解释了更多。

基本上,输入laravel/browser-kit-testing包,并将TestCase文件更改为扩展Laravel\BrowserKitTesting\TestCase,您的测试应该和5.3中的测试一样工作。

编辑

据我所知,您使用了错误的Kernel

在您的堆栈跟踪中,Illuminate/Auth/AuthManager.php:139是以下一行:

代码语言:javascript
复制
$guard->setRequest($this->app->refresh('request', $guard, 'setRequest'));

这意味着$this->app->refresh('request', $guard, 'setRequest')返回null (根据您的错误消息"null给定“)。当正在刷新的项( $this->app->refresh() )尚未绑定时,'request'将返回null。

前面的堆栈跟踪显示您的tests/BrowserKitTest.php文件正在调用Illuminate\Foundation\Http\Kernel上的bootstrap()。问题在于,Http内核的引导程序中没有绑定'request'实例的任何东西。

您应该在bootstrap()上调用Illuminate\Foundation\Console\Kernel,因为它的引导程序之一是Illuminate\Foundation\Bootstrap\SetRequestForConsole,它确实为'request'实例提供了绑定。

此外,控制台内核是由Laravel提供的原始TestCase文件指定的内核。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42032860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档