Próbuję postępować zgodnie z dobrymi praktykami podczas pisania moich zestawów testowych. W połowie zdałem sobie sprawę, że wiele wydatków IAM (Most) mojego czasu na fałszywych obiektów ... Większość moich badań robi coś takiegoTestowanie jednostek za pomocą podróbek lub makiet?
public interface ITemplateRepository
{
string get GetGenericTemplate {get;}
}
public FakeTemplateRepository : ITemplateRepository
{
public string GetGenericTemplate()
{
return "<xml>Complex</xml>";
}
}
[Test]
public void CanGetGenericTemplate()
{
ITemplateRepository rep = new FakeTemplateRepository();
Assert.IsNotNull(rep.GetGenericTemplate());
}
[Test]
public void GetGenericTemplateContains()
{
ITemplateRepository rep = new FakeTemplateRepository();
Assert.IsTrue(rep.GetGenericTemplate().StartsWith("<xml>"));
}
Rzeczywiście znalazłem się spędzając dużo czasu na FakeTemplateRepository, upewniając się, że zwróciło to rzeczywistą zawartość, której oczekiwałem. Czy to jest złe?
Czy to nadal jest prawidłowy test jednostki? Testy jednostkowe powinny być szybkie i proste, nie? Ale szczerze mówiąc, nie jestem do końca pewny, jedno jest pewne, że moje myśli o kształcie i zawartości moich danych. Zawartość w FakeRepository będzie mniej lub bardziej odzwierciedlać moją zawartość produkcyjną, aczkolwiek odczytywaną z systemu plików, zamiast z pamięci.
Jeśli w rzeczywistości to, co robię, to testy integracyjne, to jak powinienem używać mocków do testów jednostkowych?
To nie ma sensu dla mnie (jeśli korzystam z Mocks), że ustawię oczekiwanie w górę, aby wywołać metodę i zwrócić ciąg znaków? Czy brakuje mi czegoś, ale nie widzę tam zbyt wiele? Kod nawet nie skompiluje się, jeśli ustawię niepoprawną nazwę metody!
Naprawdę jestem bardzo zdezorientowany, a moje postrzeganie testów jednostkowych jest teraz całkowicie rozmyte z tymi wszystkimi koncepcjami.
Czy każdy może wykazać się super super prostym przykładem tego, jak podróbki i makiety pasują do apartamentu? np. Jaki powinien być test jednostkowy, Jaki powinien być test integracyjny?
Dzięki
Cóż, podanie kodu, którego chce, nie będzie zbyt użyteczne, ponieważ testowanie w jego najprostszej formie jest, jak sądzę, "poddaniem go swoim krokom". –