From f0b073f41e4273c943048af88a8fb4598772f4d0 Mon Sep 17 00:00:00 2001 From: Fedor Date: Mon, 31 Jul 2017 17:39:49 +1200 Subject: [PATCH] - added a specific message Added ArgumentException with a message to let user know that parameter name conflicts with header name in ExampleTable --- .../Scanners/StepScanners/Fluent/FluentScanner.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/TestStack.BDDfy/Scanners/StepScanners/Fluent/FluentScanner.cs b/src/TestStack.BDDfy/Scanners/StepScanners/Fluent/FluentScanner.cs index 92e5f393..48f6d344 100644 --- a/src/TestStack.BDDfy/Scanners/StepScanners/Fluent/FluentScanner.cs +++ b/src/TestStack.BDDfy/Scanners/StepScanners/Fluent/FluentScanner.cs @@ -203,9 +203,15 @@ private StepTitle CreateTitle(string stepTextTemplate, bool includeInputsInStepT { if (_testContext.Examples != null) { - var matchingHeader = _testContext.Examples.Headers - .SingleOrDefault(header => ExampleTable.HeaderMatches(header, i.ParameterName) || - ExampleTable.HeaderMatches(header, i.Value.Name)); + var matchingHeaders = _testContext.Examples.Headers + .Where(header => ExampleTable.HeaderMatches(header, i.ParameterName) || + ExampleTable.HeaderMatches(header, i.Value.Name)) + .ToList(); + + if (matchingHeaders.Count > 1) + throw new ArgumentException($"Cannot uniquely distinguish parameter name between '{methodInfo.Name}' method's parameter name '{i.ParameterName}' and header's name '{i.Value.Name}'"); + + var matchingHeader = matchingHeaders.SingleOrDefault(); if (matchingHeader != null) return string.Format("<{0}>", matchingHeader); }