To może nie być coś, co jest możliwe, ale pomyślałem, że i tak zapytam. Czy mimo to mogę wyodrębnić tę metodę, aby drugie wywołanie zostało zgaszone za pomocą parametru podanego w testowanej przeze mnie metodzie?C# Rhino wyśmiewa stubmethod z zakodowanym parametrem w drugim wywołaniu
Metoda skrótową:
public SupportDetails GetSupportDetails(string languageKey)
{
var result = FindSupportDetails(languageKey);
return result ?? FindSupportDetails("en-us");
}
Moja Aktualny Test:
public void GetsUSDetails_IfLangKeyDoesNotExist()
{
var langKey = "it-it";
_repo.Stub(s => s.FindSupportDetails(langKey))
.Return(supportDetails.Where(sd => sd.LanguageKey == langKey)
.SingleOrDefault());
ISupportRepository repo = _repo;
var actual = repo.GetSupportDetails(langKey);
Assert.AreEqual("en-us", actual.LanguageKey);
}
i supportDetails obiekt używany w teście:
supportDetails = new SupportDetails[]
{
new SupportDetails()
{
ContactSupportDetailsID = 1,
LanguageKey = "en-us"
},
new SupportDetails()
{
ContactSupportDetailsID = 2,
LanguageKey = "en-gb"
},
new SupportDetails()
{
ContactSupportDetailsID = 3,
LanguageKey = "es-es"
}
};
Myślę, że możesz po prostu dodać kolejne wywołanie, np. '_repo.Stub (s => s.FindSupportDetails (" en-us ")). Return (supportDetails.Where (sd => sd.LanguageKey ==" en- us "). SingleOrDefault());' – stuartd
Czy to nie wystarczy zastąpić pierwszy stub? –
Nie wierzę, ponieważ przekazywany parametr jest inny. Minęło trochę czasu, odkąd użyłem Rhino. W przeciwnym razie użyj [składnia powtórzeń] (http://www.richard-banks.org/2010/07/mocking-comparison-part-6-multiple.html) – stuartd