TL;DR; Как мога да създам тест на specflow, който извиква друг тест като първа стъпка?
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
Съжалявам, има малко специфичен хумор.
например имам тест, който вече създава продажба:
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
И искам да имам друг тест, който тества добавянето на линия за продажби
И още един тест, който тества завършването на продажбата
И още един тест, който отменя продажбата
И така нататък
Всички тези тестове ще започнат със същите първи четири стъпки като простия тест, който нарушава принципа DRY. И така, как мога да го направя така, че първата стъпка от втория тест да изпълни само първия тест? напр. нещо като:
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
Ако всеки тест започва с едни и същи първи четири реда и по-късно осъзная, че трябва да променя простия тест за създаване на продажба, тогава ще трябва да отида и да намеря и поправя навсякъде другаде, което повтаря тези четири реда.
РЕДАКТИРАНЕ: Имайте предвид, че това също трябва да може да работи във всички функции. например простият тест по-горе е дефиниран в функцията за продажби. Но също така ще имам функция за кредити и това ще изисква създаване на продажба всеки път, за да мога да я кредитирам:
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
Given I have run the create sales order test
стъпка, която изпълнява трите предишни метода наGiven
стъпки, не работи ли? Или искате друг начин? Съмнявам се, че искате да повторите часттаAssert
в следващите си тестове. - person Pierre-Luc Pineault   schedule 18.03.2015Given
като вашата част "нещо като", която извиква трите предишниGiven
ръчно? Също така отговаря на сценария във вашата редакция, тъй като можете да използвате повторно вашатаI have run the create sales order test
стъпка, където искате. Вие бяхте там 99% във вашия въпрос. - person Pierre-Luc Pineault   schedule 18.03.2015