TL; DR; Come posso creare un test di specflow che chiama un altro test come primo passo?In Specflow posso eseguire un test come passo di un altro?
Given I already have one specflow test
And I want to run another test that goes deeper than the first test
Then I create a second test that runs the first test as its first step
And I add additional steps to test the deeper functionality
Siamo spiacenti, po 'di umorismo specflow lì.
ad esempio ho un test che crea una vendita già:
Given I want to create a sales order
And I open the sales order page
And I click the add new order button
Then a new sales order is created
E voglio avere un altro test che i test l'aggiunta di una linea di vendita
E un altro test che mette alla prova il completamento della vendita
E un altro test che annulla la vendita
E .. così via
Tutti questi test inizieranno con gli stessi primi quattro passaggi del test semplice, che interrompe il principio DRY. Quindi, come posso fare in modo che il primo passaggio del secondo test esegua solo il primo test? ad esempio, qualcosa come:
Given I have run the create sales order test // right here it just runs the first test
And I add a sales order line
Then the order total is updated
Se ogni prova inizia con gli stessi primi quattro righe, e poi mi rendo conto che ho bisogno di cambiare il semplice creare vendita di prova, poi ho anche bisogno di andare a trovare e correggi ovunque che ripeta quelle quattro righe.
EDIT: Si noti che questo dovrebbe anche essere in grado di lavorare sui lineamenti. ad es. Il test semplice sopra è definito nella funzione di vendita. Ma vorrei anche avere un credito dispongono, e che richiederebbe la creazione di una vendita ogni volta al fine di essere in grado di accreditarlo:
Given I want to credit a sale
And I run the create sales order test
And I complete the the sale
And I click the credit button
Then the sale is credited
sta creando il vostro 'dato Ho eseguito il passo di creare ordine di vendita test' che esegue tre precedenti' Given' metodi passi non funziona? O vuoi un altro modo? Dubito che tu voglia ripetere la parte 'Assert' nei tuoi test successivi. –
Non mi dispiace che dovrà ripetere gli asserzioni che esisteranno nel primo test. Voglio essere in grado di eseguirlo senza dover scrivere gli stessi 4 passaggi in molti test diversi. –
sì, ma perché non crei il nuovo 'Given' come la tua parte 'qualcosa del genere', che chiama manualmente i tre' Given' precedenti? Inoltre, si adatta allo scenario nella tua modifica poiché puoi riutilizzare il passaggio "Ho eseguito il test di creazione di un ordine di vendita" dove desideri. Eri al 99% nella tua domanda. –