>>>>> Sam Holder <
samh...@gmail.com>:
> Which version of the specflow nuget package are you using?
From the packages.config of the project:
<package id="SpecFlow" version="2.1.0" targetFramework="net40" />
<package id="SpecFlow.NUnit" version="2.1.0" targetFramework="net40" />
<package id="SpecFlow.NUnit.Runners" version="2.1.0" targetFramework="net40" />
> are you using a step which calls other steps?
Not sure what that means, but if you're asking if my code behind calls a
different method that has a specflow attribute on it, then the answer is
no.
The full code of the step and the methods it calls, is:
[Then(@"(.*) er knyttet inn i expectedRefusjonsgruppe ([a-zA-Z][a-zA-Z0-9#._-]+) med (.*), (.*) og (.*) gitt som antall dager i forhold til idag\.")]
public void ThenErKnyttetInnIRefusjonsgruppeMedNULLOgNULLGittSomAntallDagerIForholdTilIdag_(string varenummer, string refusjonsgruppe, string fraDato, string forskrivesTilDato, string utleveresTilDato)
{
var pakningId = FindPakningFromVarenummer(varenummer);
var refusjonService = ServiceCreator.GetRefusjonService();
var refusjonDataset = refusjonService.GetRefusjonområdeListByPakning_ID(pakningId.Value, KodeverkLookupHelper.GetKodeverkLookup(), true);
Assert.AreNotEqual(0, refusjonDataset.Count, "No refusjonsområde found for varenummer " + varenummer);
var firstRefusjonsomradeFound = refusjonDataset[0];
var firstRefusjonsomradeFoundRow = firstRefusjonsomradeFound.TypedRow;
var pakningRefusjonsomradeRows = firstRefusjonsomradeFoundRow.GetPakningRefusjonsområdeRows();
var firstPakningRefusjonsomrade = pakningRefusjonsomradeRows[0];
var expectedFradato = DateTime.Today.AddDays(Double.Parse(fraDato));
var expectedForskrivesTilDato = ParseDate(forskrivesTilDato);
var expectedUtleveresTilDato = ParseDate(utleveresTilDato);
bool foundMatchingRefusjonsGruppe = CheckForMatchingRefusjonsgruppe(pakningRefusjonsomradeRows, refusjonsgruppe, expectedFradato, expectedForskrivesTilDato, expectedUtleveresTilDato);
Assert.IsTrue(foundMatchingRefusjonsGruppe, "Fant ingen expectedRefusjonsgruppe tilknyttet varenummer " + varenummer + " med refusjonsgruppekode " + refusjonsgruppe + " med FraDato " + expectedFradato + ", ForskrivesTilDato " + expectedForskrivesTilDato + " og UtleveresTilDato " + utleveresTilDato);
}
private bool CheckForMatchingRefusjonsgruppe(RefusjonDataset.PakningRefusjonsområdeRow[] pakningRefusjonsomradeRows, string expectedRefusjonsgruppe, DateTime? expectedFradato, DateTime? expectedForskrivesTilDato, DateTime? expectedUtleveresTilDato)
{
foreach (var pakningRefusjonsomrade in pakningRefusjonsomradeRows)
{
var actualRefusjonsgruppe = pakningRefusjonsomrade.RefusjonsområdeRow.RefusjonsgruppeKode;
var actualFraDato = pakningRefusjonsomrade.FraDato.Date;
var actualForskrivesTilDato = FindNullableForskrivesTilDato(pakningRefusjonsomrade);
var actualUtleveresTilDato = FindNullableUtleveresTilDato(pakningRefusjonsomrade);
if (expectedRefusjonsgruppe.Equals(actualRefusjonsgruppe) &&
Nullable.Compare(expectedFradato, actualFraDato) == 0 &&
Nullable.Compare(expectedForskrivesTilDato, actualForskrivesTilDato) == 0 &&
Nullable.Compare(expectedUtleveresTilDato, actualUtleveresTilDato) == 0)
{
return true;
}
}
return false;
}
private static DateTime? ParseDate(string date)
{
if (string.IsNullOrWhiteSpace(date) || "null".Equals(date.ToLower()))
{
return null;
}
return DateTime.Today.AddDays(Double.Parse(date));
}
private DateTime? FindNullableForskrivesTilDato(RefusjonDataset.PakningRefusjonsområdeRow firstPakningRefusjonsomradeRowFound)
{
try
{
return firstPakningRefusjonsomradeRowFound.ForskrivesTilDato.Date;
}
catch (StrongTypingException ste)
{
return null;
}
}
private DateTime? FindNullableUtleveresTilDato(RefusjonDataset.PakningRefusjonsområdeRow firstPakningRefusjonsomrade)
{
try
{
return firstPakningRefusjonsomrade.UtleveresTilDato.Date;
}
catch (StrongTypingException ste)
{
return null;
}
}
> does this step which calls other steps finish with a different step type
> (ie a when or a given)?
No.
There are other "Then"-steps in the same feature that calls the same
code to do the verification, but they don't call other methods with
specflow attributes.