如何在 Laravel 中为用户配置文件更新编写 TDD 代码



我想先创建一个TDD,然后再在应用程序中使用我的函数。

我已经创建了更新功能,更新有效,但在此之前,我希望运行一个测试用例。所以我创建了这个测试用例。

/** @test */
public function updateUser()
{
$this->withExceptionHandling(); 
//creating a user
$user = factory(User::class)->create();
//passing updating values
$response = $this->put('users/update_profile', [
'name' => 'name123',
'phoneno' => 9842345562,
'address' => 'newwwww'
]);
$this->assertEquals('name123', User::first()->name);
$this->assertEquals(9842345562, User::first()->phoneno);
$this->assertEquals('newwwww', User::first()->address);
}
//update function
public function update(UpdateProfileRequest $request)
{
$user = auth()->user();
$user->update([
'name' => $request->name,
'phoneno' => $request->phoneno,
'address' => $request->address
]);
session()->flash('success', 'User Proifile Updated');
return redirect(route('users.view-profile'));
}

断言两个字符串相等失败。 ---预期 +++ 实际 @@ @@ -'名称123' +'泰德·普雷多维奇'

仅收到此错误。

您不应该依赖User::first(),因为您的第一条记录可能不是您刚刚创建的记录。相反,刷新您已经必须的模型,以便在设置新值后从数据库中获取更新的值。您可以在断言之前使用$user-refresh()

/** @test */
public function updateUser() {
$this->withExceptionHandling(); 
//creating a user
$user = factory(User::class)->create();
//signing in as the new user
$this->actingAs($user);
//passing updating values
$response = $this->put('users/update_profile', [
'name' => 'name123',
'phoneno' => 9842345562,
'address' => 'newwwww'
]);
//Get new values
$user->refresh();
$this->assertEquals('name123', $user->name);
$this->assertEquals(9842345562, $user->phoneno);
$this->assertEquals('newwwww', $user->address);
}

最新更新