【问题标题】:Laravel testing: create a new userLaravel 测试:创建一个新用户
【发布时间】:2017-02-01 21:03:45
【问题描述】:

我想在 Laravel 中测试我的注册表单。我正在这样做:

$this->visit('/auth/signup/free')
        ->type('First Name', 'first_name')
        ->type('test-phpunit@example.org', 'email')
        ->type('mypassword', 'password')
        ->press('Get Started');

但是我有一个错误 500,因为我将用户重定向到一个欢迎页面,该页面测试当前用户的某些属性,而这些属性不存在:

A request to [http://localhost/welcome] failed. Received status code [500].
Caused by
exception 'ErrorException' with message 'Undefined property: App\Models\User::$active' in D:\workspace\myproject\app\Models\User.php:48
Stack trace:
#0 D:\workspace\myproject\app\Models\User.php(48): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined prope...', 'D:\\workspace\\my...', 48, Array)
#1 D:\workspace\myproject\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2670): App\Models\User->active()
[...]

用户出现在数据库中,但 Laravel 似乎无权访问其任何属性。

我该如何处理?

编辑:我使用的是 Laravel 5.3。我和这个人有同样的错误:https://laracasts.com/discuss/channels/testing/51-phpunit-tests-fail-without-middleware/replies/89708

【问题讨论】:

  • 你使用的是什么版本的 Laravel?
  • 我使用的是 Laravel 5.3。

标签: php laravel unit-testing


【解决方案1】:

让我猜猜。您可能会观察到错误,例如在未经身份验证的情况下访问 /welcome。检查/welcome 页面是否针对未经授权的请求给出这样的错误。

谷歌搜索 says (it is marked as a solution) 发现 Laravel 在测试时可能会遇到加密 cookie 的问题。尝试禁用 EncryptCookies 中间件进行测试。

Laravel 5.4 中的 Dusk 确实表现得像一个真正的浏览器,它可能会对你有所帮助。

【讨论】:

  • 我在这个页面上有一个中间件,如果没有连接,它会重定向用户,所以这个看起来永远不会出现。我试图禁用这个中间件但没有成功。用户被重定向到欢迎页面,因为我们点击“注册”按钮,我们创建用户,登录他并直接重定向他。
【解决方案2】:

更新

实际上,这取决于 Laravel 版本。

如果您使用的是最新版本(5.4),那么我认为您颠倒了您key => value。 而不是

->type('test-phpunit@example.org', 'email')

->type('email', 'test-phpunit@example.org')

对于所有人。

然后,您需要在某个地方声明某些内容以查看用户是否正确重定向到主页。例如:->assertPathIs('/home');

如果您使用的是 5.3,那么您的键值就可以了。只需在最后添加一个断言即可查看。点赞:->seePageIs('/welcome');

【讨论】:

  • Laravel 文档说->type('Taylor', 'name')。所以他正确地使用它。
  • 我猜,他使用的是 5.3 或更高版本,而不是黄昏。
  • 你说得对,我刚刚更新了我的答案。 @shukshin.ivan,如果你能帮助他,请回答,如果对 OP 没有帮助,我会删除我的。
  • 我使用的是5.3,顺序正确,用户重定向良好。就在重定向时,我得到了这个错误并且不能做任何断言。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 2022-01-27
  • 2018-06-27
  • 2020-02-13
  • 2015-04-12
  • 2012-10-26
相关资源
最近更新 更多