Laravel Auth::attemp()不起作用,即使使用有效凭据也是如此



这是我想要运行的单元测试。这总是失败的。我尝试了错误的数据。尽管如此,它还是失败了,而有了正确的数据,它仍然失败了。请有人帮我摆脱困境。

如果有人想探索更多:http://github.com/PawanRoy1997/forum.git

Php单元测试:

<?php
namespace TestsFeature;
use AppModelsUser;
use IlluminateFoundationTestingRefreshDatabase;
use IlluminateSupportFacadesAuth;
use TestsTestCase;
class UserTest extends TestCase
{
use RefreshDatabase;
/** @@test */
public function login()
{
$data = ['name'=>'some', 'email'=>'some@some.com','password'=>'password'];
User::create($data);
$this->assertTrue(Auth::attempt($data));
}
}

输出:

➜  forum git:(master) ✗ asn test
FAIL  TestsUnitUserTest
⨯ 
FAIL  TestsFeatureUserTest
⨯ login
---
• TestsUnitUserTest > 
Error 
Call to a member function connection() on null
at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1571
1567▕      * @return IlluminateDatabaseConnection
1568▕      */
1569▕     public static function resolveConnection($connection = null)
1570▕     {
➜ 1571▕         return static::$resolver->connection($connection);
1572▕     }
1573▕ 
1574▕     /**
1575▕      * Get the connection resolver instance.
+7 vendor frames 
8   tests/Unit/UserTest.php:19
IlluminateDatabaseEloquentModel::__callStatic()
• TestsFeatureUserTest > login
Failed asserting that false is true.
at tests/Feature/UserTest.php:19
15▕     public function login()
16▕     {
17▕         $data = ['name'=>'some', 'email'=>'some@some.com','password'=>'password'];
18▕         User::create($data);
➜  19▕         $this->assertTrue(Auth::attempt($data));
20▕     }
21▕ }
22▕ 

Tests:  2 failed
Time:   0.31s
➜  forum git:(master) ✗ 

实际上,我刚刚发现在创建用户时需要对密码进行散列。我忘了提我已经更新了Laravel,然后这一切就开始了。在laravel 8.51中,Auth::try只检查散列密码。但在laravel 8.50及之前版本中,它允许密码不被散列。

<?php
namespace TestsFeature;
use AppModelsUser;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesHash;
use TestsTestCase;
class UserTest extends TestCase
{
/**
* A basic feature test example.
*
* @return void
*/
public function test_example()
{
$data = [
'name' => 'someone',
'email' => 'some@some.com',
'password' => Hash::make('password'),
'confirm_password' => 'password'
];
User::create($data);
$this->assertDatabaseCount('users', 1);
$this->assertTrue(Auth::attempt(['email' => 'some@some.com', 'password' => 'password']));
}
}

最新更新