können Sie die ShouldSendLogic()
ändern Status als Parameter bool ShouldSendLogic(bool status)
zu akzeptieren. Auf diese Weise kann ShouldSendLogic
auf positive und negative Fälle getestet werden.
Ein anderer Ansatz besteht darin, IsSuccess()
Teil einer Schnittstelle zu haben und die Abhängigkeit der Klasse zu injizieren, die ShouldSendLogic()
hat. Das IsSuccess()
Ergebnis kann durch Mockup-Klassen in der Einheitentestumgebung geändert werden, und ShouldSendLogic()
kann für verschiedene Statuswerte getestet werden.
class MyClass
{
ISomeInterface _interfaceObj;
public MyClass(ISomeInterface interfaceObj)
{
_interfaceObj = interfaceObj;
}
public bool ShouldSendLogic()
{
var status = _interfaceObj.IsSuccess();
if (status)
{
SendInvoice();
// do some operation
}
return status;
}
}
bearbeiten
Durch den Code zu trennen, die für den Erfolg eine Schnittstelle überprüft, können Sie jetzt ein „Schein“ Objekt in der Unit-Tests erstellen, wo Sie, was den Wert von IsSuccess entscheiden können () sollte sein.
z.B.
public class MockSuccessClass : ISomeInterface
{
public bool IsSuccess { return true; }
}
Und dann in Ihrem „Anordnen“ Ihr Gerät zu testen, können Sie eine Instanz der MockSuccessClass erstellen und an das SUT passieren.
Sie müssen Moq nicht verwenden, aber es würde Zeit sparen, wenn Sie lassen Moq für Sie Ihre Mock-Klassen erstellen.
hat 'SendInvoice' jede Nebenwirkung verursachen, die man messen kann? –
@SamIam: Ja, diese Logik sollte nicht ausgeführt werden, wenn der Status gemäß obiger Logik – Learner
falsch ist, aber verursacht sie irgendwelche Nebenwirkungen? Was tut es? –