在应用程序中使用我的功能之前,我想先创建一个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'));
}
无法断言两个字符串相等。 ---预期 +++实际 @@ @@ -'name123' +“ Tad Predovic”
仅收到此错误。
答案 0 :(得分:0)
您不应该依赖User::first()
,因为您的第一条记录可能不是您刚刚创建的。而是在设置新值之后刷新您已经必须从数据库中获取更新值的模型。您可以在声明前使用$user-refresh()
/** @test */
公共函数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);
}