Domanda

Sto scrivendo un test unitario in CakePhp 1.3 tramite Sempletest.

Eseguo il seguente codice, che funziona (crea come previsto)

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

Devo trovare l'ID di quel post aggiunto da utilizzare nei due successivi test: modifica di un post e cancellazione di un post.Ho provato il riferimento attraverso il modello (I.e. $ post-> ID, $ questo-> post-> ID) ma sembra che passare attraverso la testata non funziona allo stesso modo.

Mi rendo anche conto che potrei interrogare per trovare max (ID), ma poi se succede solo ad essere un altro utente sul sistema di test che inserisce un nuovo post a quasi allo stesso tempopotrebbe rovinare i risultati (almeno per quanto ne so - correggimi se ho torto).

È stato utile?

Soluzione

Usually, from a controller you should use

$this->Post->getLastInsertID();

This is a wrapper for connectors methods.

$this->Post->id 

is used to set an id and then retrieve or set data.

Altri suggerimenti

I never used cakephp before, but with mysql and mysqli you can get the last inserted ID with the following:

mysql_insert_id(), and $mysqli->insert_id respectively.

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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top