Ich versuche, die Add-Methode meines BooksControllers zu testen. Voraussetzung ist, dass ein Benutzer angemeldet sein muss, bevor er ein Buch hinzufügen kann. Aber ich finde keine Möglichkeit, einen Benutzer in der Testmethode anzumelden.Wie testen Sie Aktionen, die eine Authentifizierung erfordern?
Mein Code ist wie this-
public function testAdd()
{
$user = ['email' => '[email protected]', 'password' => 'abcd'];
$this->post('/users/login', $user);
$book = ['title' => 'Foo', 'writer' => 'writer1', 'edition' => '2nd', 'course' => 'CSE', 'description' => 'abcd', 'price' => '200', 'status' => '0', 'user_id' => '1', 'photo' => 'abcd'];
$this->post('/books/add', $book);
$this->assertRedirect('/books');
}
Die Assertion fehlgeschlagen ist immer, weil ich zu/Benutzer/login weitergeleitet zu werden.
ist meine Login-Methode wie this-
//Login Function
public function login()
{
if($this->request->session()->read('Auth.User'))
{
$this->Flash->error(__('You are already logged in.'));
return $this->redirect(['controller' => 'home','action' => 'index']);
}
if($this->request->is('post'))
{
$user = $this->Auth->identify();
if($user)
{
$this->Auth->setUser($user);
return $this->redirect($this->Auth->redirectUrl());
}
}
//In case of bad login
$this->Flash->error('You must login first.');
}
Gibt es eine Möglichkeit, dieses Problem zu beheben? Vielen Dank im Voraus!
Danke! Du hast den Nagel auf den Kopf getroffen! –