Ok, come accennato nel mio commento, ho effettivamente avuto lo stesso problema. Avevo bisogno di testare gli endpoint Unfiltered e il modo migliore per ogni specifica era avviare un server Unfiltered con un singolo endpoint, eseguire le specifiche e quindi arrestare il server. Per ottenere questo, ho definito una specifica base simile a questo:
import org.specs2.mutable.Specification
abstract class SpecificationBase extends Specification{
//Do setup work here
step{
println("Doing setup work...")
success
}
//Include the real spec from the derived class
include(spec)
//Do shutdown work here
step{
println("Doing shutdown work...")
success
}
/**
* To be implemented in the derived class. Returns the real specification
* @return Specification
*/
def spec:Specification
}
Fondamentalmente, questa classe di base assembla la specifica completa come una fase di installazione ed una fase di smontaggio con la specifica reale (definito nella classe spec cemento) inserito nel mezzo. Quindi un test utilizzando questa classe di base sarebbe simile a questa:
class MySpec extends SpecificationBase{ def spec =
new Specification{
"A request to do something" should{
"be successful in case 1" in {
println("Testing case 1")
success
}
"be successful in case 2" in {
println("Testing case 2")
success
}
}
}
}
Quando si esegue questo, si vedrà:
Doing setup work...
Testing case 1
Testing case 2
Doing shutdown work...
non è perfetto, ma funziona. C'è un altro (e possibile metodo più pulito/migliore) per farlo? Probabilmente, ma questa è una soluzione che potresti esaminare usando.
[Scorrere verso il basso questa pagina doc til Prima/Dopo il paragrafo] (http://etorreborre.github.io/specs2/guide/org.specs2 .guide.Structure.html) –
@ om-nom-nom Spiega solo come eseguire il codice attorno a ciascun caso. – lambdas
whoops, intendevo il paragrafo 'Template' o' Global setup/teardown' (quello con setup/cleanup del database) :-) –