Ho le seguenti classi che desidero scrivere test unitari per:
public abstract class BaseClass
{
public bool IsFooBar(Order order)
{
return order.IsNew && IsFooBarOverride(order);
}
protected abstract IsFooBarOverride(Order order);
}
public class SimpleDerivedClass : BaseClass
{
protected override bool IsFooBarOverride(Order order)
{
// Return if the order is with a credit card.
}
}
public class ComplexDerivedClass : BaseClass
{
protected override bool IsFooBarOverride(Order order)
{
// Return a very complex statement
// If the order is for a new customer
// in New York, with an order amount of $500 or more
// and has at opted for email subscriptions.
}
}
Il problema che sto incontrando è che le mie classi derivate contengono la maggior parte della mia logica per determinare il valore di ritorno di IsFooBar(Order order)
. Voglio testare questa logica per assicurarmi che sia corretta. Ho avuto l'impressione che dovresti testare solo l'API pubblica di una classe, che è IsFooBar(Order order)
, che appartiene alla classe base.
-
Devo ridisegnare la struttura della mia classe contrassegnando IsFooBar virtuale e spero che altri sviluppatori del team usino
base.IsFooBar(order)
come parte della loro dichiarazione di ritorno? -
Devo lasciare la struttura della mia classe in intatta e testare le variazioni del metodo
IsFooBar(Order order)
per classe derivata come metodo per testare la logica nella classe protetta?