Próbowałem przyjąć wzór ciasta, ale mam trudności z dostosowaniem się do tego stylu programowania, szczególnie w przypadku testów jednostkowych.Scala: Kpiny i wzór ciasta
Załóżmy, że mam następujące obiekty biznesowe:
trait Vet {
def vaccinate(pet: Pet)
}
trait PetStore { this: Vet =>
def sell(pet: Pet) {
vaccinate(pet)
// do some other stuff
}
}
Teraz chciałbym przetestować PetStore podczas szydząc swoje funkcje od weterynarza. Gdybym używał kompozycji, tworzyłem fałszywy [Vet] i przekazywałem go konstruktorowi PetStore, a następnie programowałem symulację, tak jak robimy to w świecie Java. Jednak nie mogę znaleźć żadnego odniesienia do tego, jak ludzie robią to z wzorcem ciasta.
Jednym z możliwych rozwiązań byłoby zaimplementowanie szczepienia() w każdym przypadku testowym zgodnie z oczekiwanym użyciem, ale to nie pozwala mi na sprawdzenie, czy makiety zostały poprawnie wywołane, nie pozwala mi używać dopasowań, itp.
A więc, w jaki sposób ludzie używają wzoru ciasta z próbnymi obiektami?
To jest fajne - ale czy brakuje mi czegoś? Co robisz z typem Vet w PetStore? –
Tak więc próbowałem podać przykład bez użycia cechy ConfigComponent, ale byłem robienie czegoś złego. W każdym razie zaktualizowałem ten przykład i dodałem ConfigComponent. Mam nadzieję, że wszystko wygląda trochę bardziej wyraźnie. – OleTraveler
+1 dla https://www.precog.com/blog/Existential-Types-FTW/ –