Meine Anwendung hat die folgende Projektstruktur: Es gibt das Business-Logik-Projekt und das UnitTesting-Projekt, wo die Methoden aus der Business-Logik getestet werden. Es wird kein Mocking oder Testing Framework verwendet (wir setzen auf Visual Studio Unit Tests und implementieren unsere eigenen Mock-Objekte). In der Business-Logik lassen Sie uns sagen, dass ich die folgende Methode haben: dassMock-Objekt für Komponententests eher mehr zu OOP Frage
public static void SomeMethod()
{
....
if (cond1)
if (cond2)
SendMail();
}
ich Unit-Test soll. Ich möchte nicht das Senden der E-Mail testen, sondern die E-Mail wird unter den richtigen Umständen gesendet. So war ich so etwas wie
public class MailSender : ISmtpMail
{
// stuff
}
public class FakeMailSender : ISmtpMail
{
//
static bool SendMail()
{
return true;
}
}
Das Problem zu tun, das Denken ist, dass ich weiß nicht, wie die Nutzung der FakeMailSender in dem Unit-Test-Projekt oder in der Einheit Testmethoden, die wie etwas aussehen zu erzwingen:
[TestMethod]
public static void SomeMethod_Test()
{
// some mock initialization
BusinessLogic.SomeMEthod();
// checks
}
ohne die Businesslogic Methode Signatur zu ändern oder Injizieren Code (was unerwünscht ist)
Es wäre gut, wenn Sie erklären, warum injizierender Code unerwünscht ist, da dies eine ausgezeichnete Möglichkeit ist, Ihr Problem zu lösen. –