【问题标题】:Laravel - understand how testing worksLaravel - 了解测试的工作原理
【发布时间】:2016-08-19 02:34:55
【问题描述】:

我是框架 laravel 5.2 的初学者

我想了解单元测试的工作原理。我做了这个测试:

public function testPageLogin()
{
    $this->visit('/login')
    ->see('Connexion');
}

当我运行脚本时:一切都很好。

然后我做了这个测试:

$this->visit('/login')
     ->type('toto.toto@gmail.com', 'email')
     ->type('toto', 'password')
     ->check('souvenir')
     ->press('Connexion')
     ->seePageIs('/login');

当然 'email'、'password'、'souvenir' 字段存在于 html 页面中。使用这些值,必须显示“登录”页面,因为这些值在 DB 中是未知的。

当我运行脚本时,我遇到了失败

Illuminate\Contracts\Container\BindingResolutionException: 目标 [Illuminate\Co ntracts\Debug\ExceptionHandler] 不可实例化。在 C:\wamp\www\ecole\vendor \laravel\framework\src\Illuminate\Container\Container.php 在第 748 行

当然,我必须在某处做错事,但我不知道在哪里。任何帮助将不胜感激。谢谢。

多米尼克

【问题讨论】:

  • 我还是有这个问题。我的问题还不够清楚吗?不要犹豫,警告我是这样的。谢谢。
  • vendor/bin/phpunit --version 打印什么?

标签: laravel testing


【解决方案1】:

这是 Laravel 在使用更高版本的 PHPUnit 时的一个已知错误。我相信这个错误仍然没有被修复;

https://github.com/laravel/framework/issues/10808

与此同时,下面有一些解决方法;

1) 不要使用全局 PHPUnit,而是使用 *project*/vendor/bin/phpunit

2) 降级您的 PHPUnit 版本,以便 Laravel 与之兼容,为此,请运行以下命令;

composer global remove phpunit/phpunit
composer global require 'phpunit/phpunit=~4.0'

希望这会有所帮助。

【讨论】:

  • 感谢您的信息。我试图删除并安装 phpunit 4.0,但我有一个问题。总是启动 4.8。我在 Windows 上工作并这样做来启动我的测试:php vendor/phpunit/phpunit/phpunit tests/TestAuthentification.php
  • @user2672338 抱歉,我不知道 Windows 是什么时候。不确定这是否有帮助dustyreagan.com/downgrade-phpunit-3-6-to-3-5-15/#comment-2817
  • Composer 在降级到较低的软件包版本时遇到问题。您应该先尝试手动更改composer.json 中的phpunit 版本,删除vendor/ 目录和composer.lock,然后运行composer install
  • 试图删除所有目录 vendor/phpunit 并通过 composer 重新安装 phpunit。没有成功。我放弃并等待似乎解决了这个问题的下一个 laravel 版本(5.3)。谢谢大家。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
  • 2016-02-20
相关资源
最近更新 更多