测试用户可以编辑配置文件

时间:2019-08-14 19:14:50

标签: laravel testing laravel-5.8

情况很简单,用户可以编辑自己的个人资料。通过浏览器测试运行它,就像一个魅力。做一个测试...好了,现在我们有了一些有趣的东西。我将其发布在Laracasts网站上,但我认为更多的曝光率总是好的。

/** @test */
    function auth_user_can_edit_own_profile()
    {
        $user = factory('App\User')->create();
        $user->setProfile();  //this just makes an empty profile so a 1-1 relation exists
        $this->actingAs($user);
        $response = $this->post('profile/'.$user->id.'/update',[
            'quote'=>'Hello World',
        ]);
        $response->assertSee('Hello World');
    }

我失败了。屏幕上显示的是重定向到主页。 O.o我的代码中什么也做不成。

我相信这与我的表单请求的authorize()方法有关。但是,我看不到如何。我尝试在测试中使用$ this-> withoutExceptionHandling()而不进行任何更改。

storeProfile form request:

public function authorize()
    {
        $profile = $this->route('profile');
        if ($this->user()->can('edit profile') || $this->user()->id == $profile->user_id)
        {
            return true;
        }
        return false;
    }


Profile Controller update:

public function update(storeProfile $request, Profile $profile)
    {
        $profile->update($request->except('name'));
        $profile->save();

        if($profile->user->name != $request->input('name'))
        {
            $profile->user()->update(['name' => $request->input('name')]);
            //TODO event to track name changes
        }

        return redirect()->action('ProfileController@show',['id' => $profile->user_id]);
    }

任何对此的见解都会很有帮助,但是我真的不明白发生了什么。谢谢大家花时间阅读和帮助!

我尝试过的事情:

  • 设置身份验证以返回true。 -没有变化
  • $ this-> flushSession(); -没有变化
  • $ this-> withoutExceptionHandling()-不变

0 个答案:

没有答案