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?

È stato utile?

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
scroll top