È possibile modificare dinamicamente un dispositivo tra i metodi di test in CakePHP?
-
09-06-2019 - |
Domanda
È possibile cambiare l'attrezzatura tra i metodi di prova?Se sì, come posso farlo?
La mia sintassi per questo problema:
Nel framework cakephp sto costruendo test per un comportamento configurato aggiungendo campi alla tabella.Questo ha lo scopo di funzionare nello stesso modo in cui l'aggiunta dei campi "creati" e "modificati" emetterà automaticamente questi campi su Save.
Per testarlo I Potevo creare dozzine di combinazioni di dispositivi/modelli per testare le diverse configurazioni, ma sarebbe cento volte migliore, più veloce e più semplice semplicemente far sì che il dispositivo cambi "forma" tra i metodi di prova.
Se non hai familiarità con Quadro CakePHP, forse puoi ancora aiutarmi mentre usa Test semplice
Modificare:domanda riformulata per essere più generale
Soluzione
Non ho familiarità specifica con CakePHP, ma questo genere di cose sembra accadere ovunque con i dispositivi.
Non c'è un modo integrato nei binari almeno perché ciò accada, e immagino non in cakePHP o altrove perché l'idea stessa di un dispositivo è che è fisso
Ci sono 2 soluzioni alternative "decenti" di cui sono a conoscenza
Scrivere un
changefixture
metodo e, subito prima di eseguire asserts/etc, eseguilo con i parametri di cosa modificare.Dovrebbe andare ad aggiornare il database o qualunque cosa sia necessario fare.Non utilizzare affatto dispositivi e utilizzare una sorta di fabbrica di oggetti o generatore di oggetti per creare ogni volta i tuoi oggetti
Altri suggerimenti
Questa non è una risposta alla mia domanda, ma una soluzione al mio esempio di problema.
Invece di utilizzare più dispositivi o modificare i dispositivi, modifico gli array Model::_schema rimuovendo i campi senza i quali volevo testare.Ciò ha l'effetto che il modello si comporta come se i campi non fossero presenti, ma non sono sicuro che si tratti di un test al 100%.Non penso che sia valido per tutti i casi, ma funziona per il mio esempio.