Я пытаюсь выполнить модульное тестирование функции sql для моего приложения, но когда я пытаюсь убедиться, что метод вызывается только один раз, он выдает ошибку о том, что метод вообще не вызывается.Я использую moq, чтобы высмеивать мои различные контексты и интерфейсы.Этот метод находится в 'assigncontextsql'.
Пытался изменить то, что было издевательским, но не смог привести его к разным типам.
Тест:
[TestMethod]
public void CreateAppointment_IsValid()
{
var appointment = new Appointment(61,23,24, DateTime.Today);
using (var mock = AutoMock.GetLoose())
{
mock.Mock<IAppointmentContext>()
.Setup(x => x.CreateAppointment(appointment));
var cls = mock.Create<AppointmentContextSQL>();
cls.CreateAppointment(appointment);
mock.Mock<IAppointmentContext>()
.Verify(x => x.CreateAppointment(appointment), Times.Exactly(1));
}
}
Метод тестирования:
public void CreateAppointment(Appointment appointment)
{
try
{
_conn.Open();
using (SqlCommand cmd = new SqlCommand("CreateAppointment", _conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@questionID", appointment.QuestionId);
cmd.Parameters.AddWithValue("@careRecipientID", appointment.CareRecipientId);
cmd.Parameters.AddWithValue("@volunteerID", appointment.VolunteerId);
cmd.Parameters.AddWithValue("@timestampAppointment", appointment.TimeStamp);
cmd.ExecuteNonQuery();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
finally
{
_conn.Close();
}
}
Ожидается, что модульный тест пройдёт, поскольку я просто пытаюсь определить, правильно ли вызван метод, но метод mock.time сообщает, что он вызывается 0 раз.