TL;DR; Как создать тест спецификации, который вызывает другой тест в качестве первого шага?
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