Perché i falsi eseguono il metodo reale?
-
22-12-2019 - |
Domanda
Ho colpito una classe usando MS FAKES.Questa classe viene iniettata in un'altra classe che non è alimentata:
var stubClassA = new MyNamespace.Fakes.StubClassA();
ClassB classB = new ClassB(stubClassA);
classB.DoSomething(10);
.
Quando passo a Classb.Dosomething (), l'istanza di Clada è lì e posso vedere che è correttamente alimentata.
in classb.dosomething (int empid)
classA.GetEmployee(empId);
.
Quanto sopra fa una chiamata reale a Clada.getEmployeee ().Non dovrebbe farlo restituire nulla e non cercare di eseguire il codice reale?
Ho provato a stub GetEmployee ():
stubClassA.GetEmployee = (value) => new Employee();
.
Ma getta l'errore del tempo di compilazione:
Cannot assign to 'GetEmployee' because it is a 'method group'
.
Firma del GetEmployee in Clada
public Employee GetEmployee(int empId)
.
Qualche idea Cosa sto facendo male?
Soluzione
È necessario assicurarsi che il tuo CLARA
Un piccolo esempio che ho gettato insieme:
namespace TestLib
{
public class Employee
{
public int Id;
}
public interface IClassA
{
Employee GetEmployee(int empId);
}
public class ClassA : IClassA
{
public Employee GetEmployee(int empId)
{
return new Employee(){Id = empId};
}
}
public class ClassB
{
private IClassA _classA;
public ClassB(IClassA a)
{
this._classA = a;
}
public void DoSomething(int id)
{
_classA.GetEmployee(id);
}
}
}
.
Ora puoi stubiare come come:
var b = new StubIClassA()
{
GetEmployeeInt32 = (val) => new StubEmployee()
};
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow