public async Task ScenarioOutline_Runs_Background_Steps_First() { var feature = new GherkinFeatureBuilder() .WithBackground(sb => sb .Given("background", null)) .WithScenarioOutline("test outline", sb => sb .Given("I chose <a> as first number", null) .And("I chose <b> as second number", null) .When("I press add", null) .Then("the result should be <sum> on the screen", null), eb => eb .WithExampleHeadings("a", "b", "sum") .WithExamples("", db => db.WithData("1", "2", "3"))) .Build(); _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithScenarioSteps)}.feature")) .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(feature, new Gherkin.Ast.Comment[0]))) .Verifiable(); var featureInstance = new FeatureWithScenarioSteps(); var output = new Mock <ITestOutputHelper>(); featureInstance.InternalOutput = output.Object; await _sut.ExecuteScenarioOutlineAsync(featureInstance, "test outline", "", 0); Assert.Equal(5, featureInstance.CallStack.Count); Assert.Equal(nameof(FeatureWithScenarioSteps.BackgroundStep), featureInstance.CallStack[0].Key); }
public async Task ExecuteScenario_Executes_All_Scenario_Steps() { //arrange. var step1Text = "Given " + FeatureWithScenarioSteps.ScenarioStep1Text.Replace(@"(\d+)", "12", StringComparison.InvariantCultureIgnoreCase); var step2Text = "And " + FeatureWithScenarioSteps.ScenarioStep2Text.Replace(@"(\d+)", "15", StringComparison.InvariantCultureIgnoreCase); var step3Text = "When " + FeatureWithScenarioSteps.ScenarioStep3Text; var step4Text = "Then " + FeatureWithScenarioSteps.ScenarioStep4Text.Replace(@"(\d+)", "27", StringComparison.InvariantCultureIgnoreCase); var scenarioName = "scenario 12345"; _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithScenarioSteps)}.feature")) .Returns(new FeatureFile(CreateGherkinDocument(scenarioName, new string[] { step1Text, step2Text, step3Text, step4Text }))) .Verifiable(); var featureInstance = new FeatureWithScenarioSteps(); var output = new Mock <ITestOutputHelper>(); featureInstance.InternalOutput = output.Object; //act. await _sut.ExecuteScenarioAsync(featureInstance, scenarioName); //assert. _featureFileRepository.Verify(); Assert.Equal(4, featureInstance.CallStack.Count); Assert.Equal(nameof(FeatureWithScenarioSteps.ScenarioStep1), featureInstance.CallStack[0].Key); Assert.NotNull(featureInstance.CallStack[0].Value); Assert.Single(featureInstance.CallStack[0].Value); Assert.Equal(12, featureInstance.CallStack[0].Value[0]); output.Verify(o => o.WriteLine($"{step1Text}: PASSED"), Times.Once); Assert.Equal(nameof(FeatureWithScenarioSteps.ScenarioStep2), featureInstance.CallStack[1].Key); Assert.NotNull(featureInstance.CallStack[1].Value); Assert.Single(featureInstance.CallStack[1].Value); Assert.Equal(15, featureInstance.CallStack[1].Value[0]); output.Verify(o => o.WriteLine($"{step2Text}: PASSED"), Times.Once); Assert.Equal(nameof(FeatureWithScenarioSteps.ScenarioStep3), featureInstance.CallStack[2].Key); Assert.Null(featureInstance.CallStack[2].Value); output.Verify(o => o.WriteLine($"{step3Text}: PASSED"), Times.Once); Assert.Equal(nameof(FeatureWithScenarioSteps.ScenarioStep4), featureInstance.CallStack[3].Key); Assert.NotNull(featureInstance.CallStack[3].Value); Assert.Single(featureInstance.CallStack[3].Value); Assert.Equal(27, featureInstance.CallStack[3].Value[0]); output.Verify(o => o.WriteLine($"{step4Text}: PASSED"), Times.Once); }