Sto lavorando in Scala / Java.
Sto testando l'infrastruttura di messaggistica di una parte del mio sistema che ho realizzato diversi anni fa con CXF e Java. Più specificamente, sto riscrivendo le specifiche dello scambio di messaggi. Questo perché sto cambiando parte di esso. A quel tempo, non stavo usando TDD / BDD. Ora sto eliminando tutto con BDD. In realtà, il proprietario del sistema desidera specificamente avere la specifica di stile BDD prima che io abbia finito il progetto. Trovo anche utile in ogni caso.
I'm particularly interested in writing an end-to-end test, where I would check that the server read the message properly.
Optionally I would like to send a message and in the middle check that what is sent is conform and forward the message to the server. (Actually i think that unit testing the sending on one side and the receiving on the other side should be enough here)
Il test end to end dovrebbe essere qualcosa del tipo:
- > Client one prepara un messaggio
- > Il client invia un messaggio al server
- > Alla ricezione del messaggio sul server verifica, che il messaggio ricevuto corrisponda è previsto che sia stato inviato. In particolare, controlla che l'oggetto composito risultante costruito dal messaggio non elaborato sia corretto.
Questo, da solo, dovrebbe portare fuori diversi test unitari nel mezzo. L'altro vincolo non funzionale aiuterà anche per la questione.
Il problema qui è che il test end-to-end qui descritto in realtà comporta la scrittura di un test con codice asincrono. Ho visto cose come l'attesa o il futuro di scala per gestirlo. Tuttavia, la parte è impantanarsi, è l'osservazione di un nuovo messaggio ricevuto all'interno del server. Leggo le cose sul polling del sistema attraverso una sonda, ma non riesco ancora a capire la parte della sonda. In ogni caso, in tutto e per tutto, il problema è che il messaggio ricevuto è una variabile interna del server, ben incapsulata. Mi sto chiedendo come affrontarlo? Quali tecniche potrebbero essere raccomandate qui ??? Ci devono essere alcuni ganci esistenti per questo? Qualcuno ha qualche idea? Serializzare l'oggetto in un file di registro :), rendendo la variabile accessibile pubblicamente attraverso alcuni getter? Creare qualche oggetto traccia per l'argomento. ecc .... Apprezzerei se qualcuno potesse suggerire qualcosa.