Attualmente sto cercando di coprire il nostro carrello con i test delle unità.
La classe ShoppingCartItem
ha la proprietà Term
. Carica anche i termini disponibili per questo articolo al momento della creazione dell'oggetto. Attualmente questo viene fatto usando la chiamata alla classe statica nel costruttore.
Stato attuale:
public class ShoppingCartItem
{
private Dictionary<Guid, ShoppingCartTerm> terms;
public ShoppingCartItem(int productID)
{
terms = SKUInfoGopasProvider.LoadAllTerms(productID);
}
}
La mia domanda è. Come rendere intercambiabile la fonte di dati? Devo introdurre la classe di fabbrica?
La risposta ovvia è l'uso dell'iniezione del costruttore, ma non mi sembra giusto.
Sto pensando di fare qualcosa in questo senso.
public class ShoppingCartData
{
private readonly ShoppingCartItemFactory _factory;
public ShoppingCartData(ShoppingCartItemFactory factory)
{
_factory = factory;
}
public void AddItem(int productId)
{
var item = _factory.CreateCartItem(productId);
_items.Add(item);
}
}