Is it possible to create unit test from this method?
public void CheckIndicatorMeasurementRecordingValidity(IndicatorMeasurementRecording indicatorMeasurementRecording)
{
var isDateRangeOverLapping = this.db.IndicatorMeasurementRecordingRepository.Any(r => r.IndicatorId == indicatorMeasurementRecording.Indicator.Id && r.Id != indicatorMeasurementRecording.Id
&& r.RecordingDateRange.ToDateTime >= indicatorMeasurementRecording.RecordingDateRange.FromDateTime
&& r.RecordingDateRange.FromDateTime <= indicatorMeasurementRecording.RecordingDateRange.ToDateTime);
if (isDateRangeOverLapping)
{
throw new GrcUserException(IndicatorThresholdValidityManagementLocal.DateRangeOverlapping);
}
}
I tried to created the test like this
[TestMethod]
public void Indicator_measurement_date_range_overlapping_shall_throw_exception()
{
var indicator = new Indicator();
var oldIndicatorMeasurementRecording = new IndicatorMeasurementRecording();
var newIndicatorMeasurementRecording = new IndicatorMeasurementRecording();
var errorMessage = string.Empty;
oldIndicatorMeasurementRecording.Id = 1;
oldIndicatorMeasurementRecording.RecordingDateRange.FromDateTime = DateTime.Today.AddDays(-5);
oldIndicatorMeasurementRecording.RecordingDateRange.ToDateTime = DateTime.Today;
indicator.IndicatorMeasurementRecordings.Add(oldIndicatorMeasurementRecording);
oldIndicatorMeasurementRecording.Id = 2;
newIndicatorMeasurementRecording.RecordingDateRange.FromDateTime = DateTime.Today.AddDays(-2);
newIndicatorMeasurementRecording.RecordingDateRange.ToDateTime = DateTime.Today;
newIndicatorMeasurementRecording.Indicator = indicator;
try
{
this.indicatorValidityProxy.CheckIndicatorMeasurementRecordingValidity(newIndicatorMeasurementRecording);
}
catch (Exception ex)
{
errorMessage = ex.Message;
}
Assert.AreEqual(IndicatorThresholdValidityManagementLocal.DateRangeOverlapping, errorMessage);
}
The problem is.. the test is always failed because this.db.IndicatorMeasurementRecordingRepository.Count for test is always 0. For development purpose is always return the correct number. Only by test purpose is 0.
Can anyone help me why this.db.IndicatorMeasurementRecordingRepository.Count for test purpose always 0? And how is the best practice to writing the test for my case?
Thank you
Aucun commentaire:
Enregistrer un commentaire