Не то, чтобы мне нравится сверхпроектировать все, но иногда в этих случаях может стоить создать (маленький) класс для инкапсуляции этой информации. При создании класса RecordType затем, он мог бы иметь функции как:
пустой setDeleted ();
пустой clearDeleted ();
bool isDeleted ();
и т.д.... (или безотносительно исков конвенции)
Это могло проверить комбинации (в случае, где не все комбинации являются допустимыми, например, если 'новый' и 'удаленный' не мог бы оба быть установлен одновременно). Если бы Вы просто использовали битовые маски и т.д. затем код, который устанавливает состояние, то должен проверить, класс может инкапсулировать ту логику также.
класс может также дать Вам способность присоединить значимую информацию о входе к каждому состоянию, Вы могли добавить функцию для возврата строкового представления текущего состояния и т.д. (или использовать операторы потоковой передачи '< <';).
Для всего этого, если Вы волнуетесь по поводу устройства хранения данных, что у Вас мог бы все еще быть класс только, имеют 'символьный' элемент данных, поэтому только возьмите небольшое количество устройства хранения данных (предполагающий, что это не является виртуальным). Конечно, в зависимости от аппаратных средств и т.д. у Вас могут быть проблемы выравнивания.
у Вас могли быть фактические битовые значения, не видимые к остальной части 'мира', если они находятся в анонимном пространстве имен в cpp файле, а не в заголовочном файле.
, Если Вы находите, что код с помощью enum/#define/битовой маски и т.д. имеет много кода 'поддержки' для контакта с недопустимыми комбинациями, регистрируя и т.д. затем инкапсуляцию в классе, может быть достойным рассмотрения. Конечно, большинство раз простые проблемы более обеспечены с простыми решениями...
Вот краткое руководство по moq
Обновление: В ответ на ваш комментарий ... Большая часть написания тестируемого кода включает удаление зависимостей от классов / ресурсов, выходящих за рамки вашего контроль. Очень распространенный подход к этому - общение с интерфейсами, а не с конкретными примерами.
Это немного сложно описать должным образом (тем более, что я только что скатился с кровати), поэтому позвольте предложить вам взять копию книги Роя Ошерова ' Искусство модульного тестирования ». Это довольно небольшая книга, наполненная полезными советами и множеством сводной информации, которая познакомит вас со многими подходами к модульному тестированию.
Я только недавно начал использовать Moq, и я не уверен, насколько это поможет, но сможете ли вы достать главу 3 Pro ASP.NET MVC Framework есть действительно хороший пошаговый пример использования moq и NUnit с ASP.NET MVC.