Laravel PHPunit测试:'testUser'与预期类型“对象”不匹配

时间:2016-06-26 17:48:06

标签: php unit-testing laravel phpunit

我有以下测试:

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".

用户已添加到数据库中。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

将您的功能重命名为" test"

public function testPhotoUpload()

App\User::where('username','=','testUser')正在返回一个对象,但您希望它只返回一个用户名字符串'testUser',因此它无法通过您的测试。

我不熟悉你的App\User课程,但只是从大会上猜测,它可能会有一个名为username的属性

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

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

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