Ошибка при попытке выполнить модульное тестирование функции sql: невозможно проверить выражение, вызвано 0 раз - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь выполнить модульное тестирование функции 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 раз.

...