модульное тестирование / руководство по интеграции для корзины покупок - PullRequest
0 голосов
/ 03 декабря 2009

Нужны некоторые рекомендации о том, как проводить модульное тестирование корзины покупок (.net mvc, c #).

Я хочу использовать sqllite, поскольку я использую nhibernate, чтобы я мог создать версию своей базы данных в памяти для интеграционного тестирования.

Итак, у меня есть объект Корзина:

public class Cart
{
      void Add(Item item);
      void Delete(Item item);

      void CalculateTotalBLah();
}

, поэтому метод Add может выглядеть следующим образом:

public void Add(Item item)
{
     ItemDAO item = new SomeFactory();

     item.Add(item);
}

Итак, я должен проверить две вещи:

  1. что представление в корзине объекта Cart добавляет товар в корзину.
  2. база данных правильно синхронизирована. с объектом в памяти.

Тест базы данных, на мой взгляд, довольно прост.

Как мне проверить # 1, как мне удалить зависимость от операций с БД? Nunit делает это для меня как-то?

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Очень сложно выполнить модульное тестирование кода с использованием шаблона активной записи. Вы можете упростить тестирование кода, используя «принцип единой ответственности», это означает, что один класс отвечает за одну вещь. Ваш класс корзины отвечает за 2 вещи: доступ к данным и бизнес-логику корзины. Вы можете упростить тестирование этого кода с помощью отдельного репозитория или объекта запроса для доступа к данным. Если вы не хотите модифицировать свой код, вы можете попытаться смоделировать вещи с помощью изолятора типа momock (насколько мне известно, другие фреймворки не могут имитировать этот вид кода, но мне никогда не требовалось лично использовать momo type)

1 голос
/ 03 декабря 2009

Вы можете использовать шаблон хранилища . Затем создайте Moq для хранилища. Макет должен убедиться, что сохранение было вызвано. Конструктор корзины покупок должен взять IRepository, чтобы вы могли отправлять макет или реальную вещь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...