【问题标题】:Laravel test breaks on attaching many-to-many relationshipLaravel 测试在附加多对多关系时中断
【发布时间】:2020-06-12 17:56:39
【问题描述】:

我有一个测试应该测试默认用户的注册。测试函数如下所示:

   public function testCanRegister()
    {
        $this->json('POST', '/register', [
            'name' => 'John Doe',
            'email' => 'johndoe@hotmail.com',
            'password' => bcrypt('1234')
        ])
            ->assertStatus(200)
            ->assertJsonFragment([
                'id' => 3,
                'name' => 'John Doe',
                'email' => 'johndoe@hotmail.com'
            ]);
    }

它给了我以下错误:

预期状态码 200 但收到 500。未能断言 200 与 500 相同。

它正在测试的功能是这样的:

   public function register(RegisterRequest $request)
    {
        $validatedData = $request->validated();

        $user = new User;
        $user->name = $validatedData['name'];
        $user->email = $validatedData['email'];
        $user->password = bcrypt($validatedData['password']);
        $user->roles->attach(1); // give User role.

        if (!$user->save()) {
            return response()->json('Gebruiker kan niet worden geregistreerd', 500);
        }

        // Create session for the just registered User.
        Auth::attempt([
            'email' => $user->email,
            'password' => $request->json('password')
        ]);

        return response()->json($user, 200);
    }

当我评论这一行时:

$user->roles->attach(1);

测试成功。关于如何改进测试以使其成功的任何想法?唯一不起作用的是附加角色。

【问题讨论】:

    标签: laravel unit-testing automated-tests laravel-dusk


    【解决方案1】:

    点赞many to many relation doc

    $user = App\User::find(1);

    $user->roles()->attach($roleId);

    所以,当你附加时,你附加关系,而不是集合...... 请不要说 $user->roles 是角色的集合,而 $user->roles() 是一个关系 ....

    只需将您的声明更新为:

    $user->roles()->attach(1);

    【讨论】:

      【解决方案2】:

      试试 $user->roles()->attach(1);先保存用户后。

      喜欢:

      $user->save();

      $user->roles()->attach(1);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-02
        • 2018-07-23
        • 2015-01-29
        • 2016-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多