Laravel PHPunit 测试:'testUser' 与预期类型不匹配 "object"

Laravel PHPunit test: 'testUser' does not match expected type "object"

我有以下测试:

class AdminPanelTest extends TestCase
{
    public function photoUpload()
    {
        $user = new App\User;
        $user->username = "testUser";
        $user->email = "testUser@hotmail.com";
        $user->password = bcrypt("testUser");
        $user->photo_url = "abc.jpg";
        $user->save();

        $test = App\User::where('username','=','testUser');
        $this->assertEquals($test,'testUser');
        $this->assertCount(1,$test);
    }
}

结果是 'testUser' does not match expected type "object"..

用户被添加到数据库中。

我是不是漏掉了什么?

重命名您的函数以 "test"

开头
public function testPhotoUpload()

App\User::where('username','=','testUser') 正在 returning 一个对象,但您期望它 return 只是一个用户名字符串 'testUser' 所以它没有通过您的测试。

我不熟悉你的 App\User class,但只是根据惯例猜测,它可能会有一个 属性 命名为 username

在那种情况下,如果您比较这些值,即预期的字符串文字 'testUser' 和对象 属性 $test->username[=19,我希望您的测试能够通过=]

此外,assertEquals 按照惯例希望您将期望值作为第一个参数,将实际值作为第二个参数。

$this->assertEquals('testUser', $test->username);