Я не согласен с предыдущим ответом.
Корнишон текст, который вы чувствовали , как вы хотели написать, вероятно, прав.
Я собираюсь изменить его просто немного , чтобы сделать так, чтобы шаг When
представлял собой конкретное действие, которое тестируется.
Given I am on the data entry screen
And I have selected "do not update frobnicator"
When I submit the form
Then the frobnicator is not updated
Как точно Вы утверждаете, что результат будет зависеть от того, как ваша программа обновит frobnicator, и какие опции вам дают ... но чтобы показать, что это возможно, я предполагаю, что вы отключили доступ к данным слой из вашего пользовательского интерфейса и могут его высмеивать - и, следовательно, следить за обновлениями.
Используемый мною синтаксис взят из Moq.
...
private DataEntryScreen _testee;
[Given(@"I am on the data entry screen")]
public void SetUpDataEntryScreen()
{
var dataService = new Mock<IDataAccessLayer>();
var frobby = new Mock<IFrobnicator>();
dataService.Setup(x => x.SaveRecord(It.IsAny<IFrobnicator>())).Verifiable();
ScenarioContext.Current.Set(dataService, "mockDataService");
_testee = new DataEntryScreen(dataService.Object, frobby.Object);
}
Здесь важно отметить, что данный шаг устанавливает объект, который мы тестируем, ВСЕМИ вещами, в которых он нуждается ... Нам не нужен был отдельный неуклюжий шаг, чтобы сказать "и у меня есть фробникатор, который я «Я запомню» - это было бы плохо для заинтересованных сторон и плохо для гибкости вашего кода .
[Given(@"I have selected ""do not update frobnicator""")]
public void FrobnicatorUpdateIsSwitchedOff()
{
_testee.Settings.FrobnicatorUpdate = false;
}
[When(@"I submit the form")]
public void Submit()
{
_testee.Submit();
}
[Then(@"the frobnicator is not updated")]
public void CheckFrobnicatorUpdates()
{
var dataService = ScenarioContext.Current.Get<Mock<IDataAccessLayer>>("mockDataService");
dataService.Verify(x => x.SaveRecord(It.IsAny<IFrobnicator>()), Times.Never);
}
Приспосабливайся к принципу «Организовывать, действовать, утверждать» в зависимости от ваших обстоятельств.