Вот что яКак бы я правильно настроил эту особенность/сценарий SpecFlow?
Feature: Register a new customer
As a user
I need to be able to register myself
so that I can place orders
Scenario: Register a new customer with Valid information
Given I fill in valid customer information
When I press submit
Then I should be notified that I'm registered
Scenario: Register a new customer with Invalid information
Given I fill in invalid customer information
When I press submit
Then I should be notified it was invalid
Проблема заключается в том, что я повторив Когда два раза, но я не вижу способ обойти это, что мне нужно сделать, это выяснить, как вы бы установить это правильно с 2 сценариями или я не смотрю на это правильно?
Вот определения Step, но они мне кажутся не такими, потому что я должен иметь все это в одном классе Steps для его запуска. По-моему, я читаю неправильно. Когда я нарушу эти 2 части и положить их в своем собственном шаге классе я получаю Erorr:
binding error: Ambiguous step definitions found for step 'When I press submit':
[Binding]
public class RegisterAValidCustomerSteps
{
private RegisterCustomerViewModel _registerCustomerVm;
[Given(@"I fill in valid customer information")]
public void GivenIFillInValidCustomerInformation()
{
// use the ViewModel to represent the User interacting with the View
_registerCustomerVm = new RegisterCustomerViewModel();
_registerCustomerVm.FirstName = "Mark";
_registerCustomerVm.LastName = "W";
_registerCustomerVm.Email = "[email protected]";
}
[Given(@"I fill in invalid customer information")]
public void GivenIFillInInvalidCustomerInformation()
{
// simulate possible invalid name by missing the Last Name
_registerCustomerVm = new RegisterCustomerViewModel();
_registerCustomerVm.FirstName = "Mark";
_registerCustomerVm.Email = "[email protected]";
}
[When(@"I press submit")]
public void WhenIPressSubmit()
{
_registerCustomerVm.Submit();
}
[Then(@"I should be notified that I'm registered")]
public void ThenIShouldBeAbleToPlaceOrders()
{
_registerCustomerVm.MessageText.ShouldBe("Success! Check your inbox for confirmation");
}
[Then(@"I should be notified it was invalid")]
public void ThenIShouldBeNotifiedItWasInvalid()
{
_registerCustomerVm.MessageText.ShouldBe("Failure! Last Name can't be blank.");
}
}
Хорошо, поэтому для моего случая я действительно должен иметь один. Предоставлено «Учитывая, что я заполняю свое регистрационное имя и адрес электронной почты» и 2 И утверждения «И информация действительна», «И информация недействительна», «Когда я нажимаю Отправить ", а затем 2 Затем утверждения правильные? Кроме того, все это внутри одного класса Step? –
На самом деле у вас может быть один заданный шаг «Учитывая, что я заполняю регистрационную форму» с таблицей счетчика, которая описывает входные данные. Но я предпочел бы пойти с двумя разными шагами (как у вас сейчас), которые описывают, какие данные были введены (действительны или недействительны). После подготовки контекста у вас есть один «Когда я отправляю регистрационную форму» (я думаю, что он ближе к делу, а затем «Когда я нажимаю« Отправить »). И еще два шага, как у вас сейчас. –