Модульное тестирование метода, который отправляет и удаляет по выбору C # - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть этот метод, который выбирает одну строку таблицы и копирует ее в другую таблицу, а затем просто удаляет ее из первой.Проблема в том, как я могу выполнить его модульное тестирование, потому что он выполняет два метода (Post и Delete) одновременно.

Вот метод:

public ActionResult Pay(int id, Car car)
    {
        try
        {
            using (BookCarDBEntities db = new BookCarDBEntities())
            {

                var carToDelete = db.Cars.FirstOrDefault(c => c.Id == id);
                var book = CreateNewBooking(carToDelete);
                db.Bookings.Add(book);



                db.Cars.Remove(carToDelete);

                db.SaveChanges();


                return RedirectToAction("ListBookings", "Home");
            }

        }
        catch (Exception ex)
        {
            return View(ex + "error");
        }
    }

    private Booking CreateNewBooking(Car car)
    {
        var bookingCreated = new Booking
        {
            id = car.Id,
            model = car.model,
            make = car.make,
            price = car.price,
            location = car.location
        };

        return bookingCreated;
    }

1 Ответ

0 голосов
/ 16 декабря 2018

Неважно, сколько внешних функций вызывает ваш метод.Чтобы получить значения из вызовов методов в вашем методе (которые вы хотите модульного тестирования), вы должны смоделировать эти методы, чтобы они возвращали определенные ответы при вызове с определенными параметрами.

Вы должны проверить Moq научиться издеваться над методами.Также я предлагаю вам обернуть ваши методы интерфейсом (BookCarDBEntities).Более важно писать код в тестируемый, а не писать тесты в неуправляемый код.Надеюсь, это поможет.

...