Можно ли смешивать шаги Assert and Act? Является ли AAA более ориентированным, чем правило? Или я чего-то не хватает?Подтверждение смешивания и действие в синтаксисе модульного тестирования AAA
Вот мой тест:
[TestMethod]
public void CancelButtonSelected_DontCancelTwiceThenCancel_DialogCloses()
{
// Arrange
IAddAddressForm form = Substitute.For<IAddAddressForm>();
// Indicate that when Show CancelMessage is called it
// should return cancel twice (saying we want to cancel the cancel)
// then it should return ok
form.ShowCancelMessage().Returns(DialogResult.Cancel,
DialogResult.Cancel, DialogResult.OK);
AddAddressController controller = new AddAddressController(form);
AddressItem item = TestHelper.CreateAddressBob();
// Act
EnterAddressInfo(form, controller, item);
controller.CancelButtonSelected();
Assert.IsTrue(form.DialogResult == DialogResult.None);
controller.CancelButtonSelected();
Assert.IsTrue(form.DialogResult == DialogResult.None);
controller.CancelButtonSelected();
// Assert
Assert.IsTrue(form.DialogResult == DialogResult.Cancel);
}
Так я называю это метод 3 раза. После каждого вызова я хочу убедиться, что мы действительно не отменили диалог. Затем на третьем вызове диалог должен быть отменен.
Является ли это «законным» использованием синтаксиса/стиля AAA?
+1 для косвенного указания, что тест должен иметь только одну причину. –