Как правильно провести модульное тестирование моего DAL?

Я новичок в модульном тестировании. Но как мне провести модульное тестирование моего DAL, написанного с помощью Entity Framework, чтобы я мог убедиться, что мой код DAL работает правильно, но на самом деле никакая база данных не затронута? Может кто-нибудь дать как можно больше подробностей, пожалуйста.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
0
4 362
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Если вы хотите проверить, что ваш уровень доступа к данным работает правильно, вам действительно нужно протестировать его на базе данных в какой-то момент, иначе вы на самом деле не тестируете его работу.

+1 А если тестовой базы данных нет, ее действительно нужно создать (похоже, ОП озабочен обновлением данных).

Dana the Sane 21.11.2008 22:24

Какова роль издевательства, может ли кто-нибудь объяснить его использование по сравнению с ролью тестовой базы данных?

Ray 21.11.2008 23:27

Тестовая база данных будет тем, с чем вы бы запускали свои интеграционные тесты (тесты вашего DAL). Мокинг будет использоваться для замены вашего DAL для модульных тестов, чтобы вы просто тестировали логику без фактического попадания в базу данных (например, вы убедитесь, что ваш код правильно вызывает ваш DAL, предоставляя имитацию).

Todd 22.11.2008 02:11

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

интересно, никогда не задумывался об этом, я уверен, что смогу погуглить, но есть ли у вас фрагмент кода, как это сделать?

Ray 21.11.2008 23:25

Это не юнит-тест, а интеграционный тест, и это нормально. Многие фреймворки имеют свои интеграционные тесты, указывающие на отдельную тестовую базу данных с автоматическими транзакциями для каждого отдельного теста.

Hates_ 22.11.2008 00:54

Выполняет ли NUnit этот автоматический переход при тестировании? Если да, то как мне это настроить?

Ray 22.11.2008 01:04

Интересный подход, но я не уверен, что буду использовать его tbh, потому что вы не завершаете операцию. Почему бы не использовать метод разборки, который очищает после теста?

roundcrisis 16.03.2010 16:40

Модульное тестирование DAL - очень распространенная головная боль при разработке. По большей части я предлагаю вам пропустить это.

Большинство ORM в наши дни предлагают какой-то язык запросов, будь то LINQ или HQL, или какой-то другой вариант. Поскольку для правильного модульного теста требуется, чтобы вы фактически не попадали в базу данных, вам нужно издеваться над ORM, и это самая большая головная боль, о которой вы можете подумать. Это того не стоит, ИМО. В конечном итоге вы проверяете только то, что написали правильный запрос в своем коде; вы вообще не получаете регрессионного значения и можете лучше служить своим целям, просмотрев код.

Однако я не говорю, что вам не следует тестировать использование DAL; просто не пробуйте модульное тестирование. У вас все еще должен быть набор интеграционных и пользовательских приемочных тестов для вашей программы / системы; пусть вместо этого они проверят ваш доступ к данным.

Другие вопросы по теме