Beispiel #1
0
        public async Task ExecuteScenario_Executes_Background_Steps_First()
        {
            var gherkinFeaure = new GherkinFeatureBuilder()
                                .WithBackground(sb => sb
                                                .Given("given background", null)
                                                .When("when background", null)
                                                .Then("then background", null))
                                .WithScenario("test scenario", sb => sb
                                              .Then("step one", null))
                                .Build();

            var gherkinDocument = new Gherkin.Ast.GherkinDocument(gherkinFeaure, new Gherkin.Ast.Comment[0]);

            _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithBackgroundSteps)}.feature"))
            .Returns(new FeatureFile(gherkinDocument))
            .Verifiable();

            var featureInstance = new FeatureWithBackgroundSteps();
            var output          = new Mock <ITestOutputHelper>();

            featureInstance.InternalOutput = output.Object;

            //act.
            await _sut.ExecuteScenarioAsync(featureInstance, "test scenario");

            //assert.
            _featureFileRepository.Verify();
            Assert.Equal("abcd", featureInstance.OrderValidator);
            output.Verify(o => o.WriteLine($"Given given background: PASSED"), Times.Once);
            output.Verify(o => o.WriteLine($"When when background: PASSED"), Times.Once);
            output.Verify(o => o.WriteLine($"Then then background: PASSED"), Times.Once);
            output.Verify(o => o.WriteLine($"Then step one: PASSED"), Times.Once);
        }
        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);
        }
Beispiel #3
0
        public async Task ExecuteScenario_Executes_Scenario_With_Star_Notation()
        {
            //arrange.
            var gherkinFeature = new GherkinFeatureBuilder()
                                 .WithScenario("S", steps => steps.Star("I have some cukes", null))
                                 .Build();

            _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithStarNotation)}.feature"))
            .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(gherkinFeature, null)))
            .Verifiable();

            var featureInstance = new FeatureWithStarNotation();
            var output          = new Mock <ITestOutputHelper>();

            featureInstance.InternalOutput = output.Object;

            //act.
            await _sut.ExecuteScenarioAsync(featureInstance, "S");

            //assert.
            _featureFileRepository.Verify();

            Assert.Single(featureInstance.CallStack);
            Assert.Equal(nameof(FeatureWithStarNotation.I_Have_Some_Cukes), featureInstance.CallStack[0].Key);
        }
Beispiel #4
0
        public void Find_Features_That_Are_Not_Implemented()
        {
            //arrange.
            _featureFileRepository.Setup(r => r.GetFeatureFilePaths())
            .Returns(new List <string> {
                "path1", "path2"
            })
            .Verifiable();

            _featureClassInfoRepository.Setup(r => r.GetFeatureClassesInfo())
            .Returns(new List <FeatureClassInfo> {
                FeatureClassInfo.FromFeatureClassType(typeof(MyFeature))
            })
            .Verifiable();

            var expectedFeature = new GherkinFeatureBuilder().Build();

            _featureFileRepository.Setup(r => r.GetByFilePath("path2"))
            .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(expectedFeature, null)))
            .Verifiable();

            //act.
            var features = _sut.Discover();

            //assert.
            _featureFileRepository.Verify();
            _featureClassInfoRepository.Verify();
            _featureFileRepository.Verify(r => r.GetByFilePath("path1"), Times.Never);

            Assert.NotNull(features);
            Assert.Single(features);
            Assert.Same(expectedFeature, features[0]);
        }
        public void Find_Scenarios_In_Feature_File(
            Type featureClassType,
            string fileName)
        {
            //arrange.
            var gherkinFeature = new GherkinFeatureBuilder().WithScenario("scenario1", steps =>
                                                                          steps.Given("step 1", null))
                                 .Build();

            _featureFileRepository.Setup(r => r.GetByFilePath(fileName))
            .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(gherkinFeature, null)))
            .Verifiable();

            //act.
            var feature = _sut.Discover(featureClassType);

            //assert.
            _featureFileRepository.Verify();

            Assert.NotNull(feature);
            Assert.Same(gherkinFeature, feature);
        }