Dies ist mein CodeUnit-Tests Körper von Eigenschaften
public class AssistanceRequest : DocumentBase
{
public AssistanceRequest()
{
RequestTime = DateTime.Now;
ExcecutionTime = DateTime.MaxValue;
}
public AssistanceRequest(int amount, string description, DateTime? requestTime) : this()
{
//Check for basic validations
if (amount <= 0)
throw new Exception("Amount is not Valid");
this.Amount = amount;
this.Description = description;
this.RequestTime = requestTime ?? DateTime.Now;
}
private long Amount { get; set; }
private DateTime requestTime { get; set; }
public DateTime RequestTime
{
get { return requestTime; }
set
{
if (value != null && value < DateTime.Now)
throw new Exception("Request Time is not Allowed");
requestTime = value;
}
}
Wie Sie Ich habe eine Validierung in meinem Set Körper sehen kann. Ich muss es testen. und ich versuche, den Konstruktor in meinen Tests aufzurufen. aber ich bekomme Exception in Constructor (act) vor der Assertion. Wie mache ich meine Tests richtig?
Dies ist mein Test:
[Theory]
[MemberData("RequestFakeData")]
public void Should_Throw_Exception_RequestDate(int amount, string description, DateTime requestDate)
{
var manager = new AssistanceRequest(amount,description,requestDate);
manager.Invoking(x => x.SomeMethodToChangeRequestTime).ShouldThrowExactly<Exception>()
}
public static IEnumerable<object[]> RequestFakeData
{
get
{
// Or this could read from a file. :)
return new[]
{
new object[] { 0,string.Empty,DateTime.Now.AddDays(1) },
new object[] { 2,"",DateTime.Now.AddDays(-2) },
new object[] { -1,string.Empty,DateTime.Now.AddDays(-3) },
};
}
}
ich den Fehler zu dieser Linie erhalten:
var manager = new AssistanceRequest(amount,description,requestDate);
der Konstruktor versucht, die Eigenschaft zu setzen, damit es die Ausnahme wird. und kommt nicht zur Behauptung.
Meine Frage ist: Wie kann ich das testen, ohne meinen Konstruktor zu ändern?
Warum testen Sie den Konstruktor anstelle der Eigenschaft, wie in der Frage gefordert? Sie können eine Instanz mit einem parameterlosen Konstruktor erstellen und die Eigenschaft testen –