È possibile prendere in giro la classe Assembly
?Come posso prendere in giro Assemblare?
Se sì, utilizzando quale struttura e in che modo?
In caso contrario, come si farebbe a scrivere test per il codice che utilizza Assembly
?
È possibile prendere in giro la classe Assembly
?Come posso prendere in giro Assemblare?
Se sì, utilizzando quale struttura e in che modo?
In caso contrario, come si farebbe a scrivere test per il codice che utilizza Assembly
?
TypeMock è molto potente. Immagino che possa farlo. Per gli altri framework mock come Moq o Rhino, dovrai usare un'altra strategia.
strategia per Rhino o Moq:
Per esempio: Si utilizza la Asssembly classe per ottenere il nome completo di montaggio.
public class YourClass
{
public string GetFullName()
{
Assembly ass = Assembly.GetExecutingAssembly();
return ass.FullName;
}
}
Il Assemblea classe derivata dall'interfaccia _Assembly
. Quindi, invece di utilizzare Assembly direttamente, è possibile iniettare l'interfaccia. Quindi, è facile prendere in giro l'interfaccia per il test.
La classe modificata:
public class YourClass
{
private _Assembly _assbl;
public YourClass(_Assembly assbl)
{
_assbl = assbl;
}
public string GetFullName()
{
return _assbl.FullName;
}
}
nel test, si deridono _Assembly
:
public void TestDoSomething()
{
var assbl = MockRepository.GenerateStub<_Assembly>();
YourClass yc = new YourClass(assbl);
string fullName = yc.GetFullName();
//Test conditions
}
Lo fa. Puoi spiegare come lo farei in un quadro di simulazione "tradizionale" (come Moq o Rhino)? –
Oh, non sapevo di questa interfaccia "nascosta" '_Assembly'. Grazie. Se l'avessi fatto, non avrei fatto la domanda. Immagino che se Assembly non implementasse questa interfaccia, avrei potuto crearne uno io stesso ('IAssembly') e scrivere un wrapper che lo implementasse e utilizzasse l'implementazione' Assembly', è corretto? –
@ Martinho: corretto –
raccontarla "tua madre è un criceto, e tuo padre puzza di eldeberries"? – patros
@patros: mi ci è voluto un po 'per capire ... –
@ Martin Fernandes: Aggiunto un esempio per Rhino. –