Question

J'écris un test unitaire dans CakePHP 1.3 via SimpleTest.

J'exécute le code suivant, qui fonctionne (il crée comme prévu)

$this->testAction('/post/add/user:'. $userId, array('method' => 'post'));

Je dois trouver l'ID de cette publication ajoutée à utiliser dans les deux prochains tests : modifier une publication et supprimer une publication.J'ai essayé de faire référence au modèle (c'est-à-dire$Post->id, $this->Post->id) mais il semble que passer par testAction ne fonctionne pas de la même manière.

Je me rends également compte que je pourrais interroger pour trouver max(id), mais s'il se trouve qu'il y a un autre utilisateur sur le système de test qui insère un nouveau message à presque en même temps, cela pourrait gâcher les résultats (du moins pour autant que je sache - corrigez-moi si je me trompe).

Était-ce utile?

La solution

Habituellement, à partir d'un contrôleur, vous devez utiliser

$this->Post->getLastInsertID();

Il s'agit d'un wrapper pour les méthodes de connecteurs.

$this->Post->id 

est utilisé pour définir un identifiant, puis récupérer ou définir des données.

Autres conseils

Je n'ai jamais utilisé cakephp auparavant, mais avec mysql et mysqli, vous pouvez obtenir le dernier identifiant inséré avec ce qui suit :

mysql_insert_id(), et $mysqli->insert_id respectivement.

http://php.net/manual/en/function.mysql-insert-id.php

http://php.net/manual/en/mysqli.insert-id.php

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top