Wie kann ich simulieren Sie eine Schnittstelle mit Moq oder NInject-Kernel Spott

Ich nur watete durch Fragen und blogs über das Thema mocking und Dependency Injection. Zu einem Ergebnis kommen, ich brauche nur zu verspotten, die Schnittstelle, die verbraucht wird, durch den Kunden. Ich freue mich auf das testen einer einfachen Anwendungsfall hier mit keine Ahnung.

Der Vertrag

public Interface IApplicationService
{

     bool DeleteApplication(int id);

     ApplicationDto AddApplication(ApplicationDto application);

     IEnumerable<ApplicationDto> GetApplications();

}

Umsetzung ( ich werde mock )

public Class ApplicationService:IApplicationService
{
    private EntityFrameworkRepo repo; 

    public ApplicationService()
    {
         repo = new EntityFrameworkRepo();
    }

    public ApplicationDto Add(ApplicationDto dto)
    {
         //add to dbcontext and commit
    }

}

Spott Code

[Test(Description = "Test If can successfully add application")]
public void CanAddApplication()
{
    //create a mock application service
    var applicationService = new Mock<IApplicationService>();

    //create a mock Application Service to be used by business logic
    var applicationDto = new Mock<ApplicationDto>();

    //How do i set this up
    applicationService.Setup(x => x.GetApplications()).Returns(IEnumerable<applicationDto.Object>);
}

Und ich bin sicher, ich brauche zum testen der business Logik eher als lustig. Also, was ist es genau ich tun muss, um zu testen, meine ApplicationService aber dann halten Sie das entity framework aus.

btw zu sprechen ApplicationService es nutzt die constructor injection mit NInject. So spotten diese mit NInject.MockingKernel setup Abhängigkeit Kette?

  • Es sieht aus wie Sie sind ein wenig verwirrt zwischen testing und mocking. Sollten Sie nicht verhöhnen die Klasse, die Sie möchten, um zu testen, nur seine Abhängigkeiten.
  • Genau 🙂 ich bin verwirrt. Also in meinem Fall, was soll ich eigentlich verspotten ? und jeder code, weiter zu erklären würde wirklich helfen, mich durch
  • Ich bin nicht vertraut mit ninject, so kann ich dir nicht helfen, aber es sieht aus wie Sie sollen erstellen Sie eine Instanz der ApplicationService, dann 'injizieren' es mit einem mock repo - und/oder dto Objekt. Dann können Sie testen, ob die korrekten Aufrufe vorgenommen wurden, auf die diese verspottet, mit der Verify nennen. Du bist fast da!
InformationsquelleAutor Deeptechtons | 2013-02-01
Schreibe einen Kommentar