|
1 / 1 / 0
Регистрация: 23.04.2021
Сообщений: 127
|
|||||||||||||||||||||
Тестирование MOCK09.07.2022, 00:14. Показов 1212. Ответов 7
Метки нет (Все метки)
Есть интерфейс по "постройке объекта". В данном случае как пример это ручка.
Moq.MockException: IPenBuilder.SetBrand(Brand) invocation failed with mock behavior Strict. All invocations on the mock must have a corresponding setup. Почему? Условие что MockBehavior.Strict должен быть!
0
|
|||||||||||||||||||||
| 09.07.2022, 00:14 | |
|
Ответы с готовыми решениями:
7
Нагрузочное тестирование и стрессовое тестирование
Mock тесты |
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
|
||||||||
| 09.07.2022, 11:30 | ||||||||
|
Ok, если это просто пример использования Builder-а, просто выглядит не очень. ![]() Объект Pen должен создаваться только после вызова метода Build. Вы же смешали паттерны AbstractFactory (на фабричных методах) и Builder в кучу. Сделайте, например, так: Sample
По сабжу: Вы тестируете ваш IPenBuilder - значит Mock-ать его не надо, надо проверять работу реального builder-а. Mock тут вообще не нужен.
0
|
||||||||
|
1 / 1 / 0
Регистрация: 23.04.2021
Сообщений: 127
|
|
| 09.07.2022, 13:34 [ТС] | |
|
Я тестирую контроллер (target). А мокаю интерфейсы которые передаются в контроллер соответственно
Поэтому вопрос "почему пишет, что не все методы сетаплены" открытый.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
|
|||||||||
| 09.07.2022, 17:53 | |||||||||
Что запись оказалась в БД (используя, например, InMemoryDatabase, если работа с БД идет через EF) и т.д. Обычно проверяют какой-то специфический кусок логики, который приводит к изменению состояния, и это состояние уже Assert-ят в конце. А те объекты, которые участвуют в работе метода, и которые достаточно сложно получить как реальную зависимость (например объекты, делающие запросы на сторонний сервис, или запросы в БД) - их уже Mock-ают (если речь идет о Unit-тестах). И эти Mock-и не валидируют. Вот ответьте на вопросы: 1. Зачем проверять работу вами же созданного Mock-а в тестах? 2. В чем назначение Mock-а? 3. Зачем устанавливать Setup два раза?
0
|
|||||||||
|
1 / 1 / 0
Регистрация: 23.04.2021
Сообщений: 127
|
|
| 09.07.2022, 18:40 [ТС] | |
|
На первые два вопроса отвечаю - это задание. Я также тестировал другие методы например добавление в базу и удаление. А теперь я тестирую интерфейс IPenBuilder.
Отвечаю на 3ий вопрос - хоть сетаплю 1 раз выходит эта же ошибка. Поэтому я хочу понять, что еще "незасетаплено". Ведь ошибка в том, что не все методы "засетапили", а не "пересетапили"
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
|
|||||||
| 09.07.2022, 19:24 | |||||||
|
Попробуйте Mock-ать другим способом:
0
|
|||||||
|
1 / 1 / 0
Регистрация: 23.04.2021
Сообщений: 127
|
|||||||||||
| 09.07.2022, 21:56 [ТС] | |||||||||||
|
Попробовал но пишет, что метод SetBrands не вызывается. Я убрал этот метод из контроллера и из теста, тогда все успешно проходит. Но почему то он зацепился за SetBrand.
Модели выглядят так со связью 1 ко многим
0
|
|||||||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
|
||||||||||||||||||||||
| 09.07.2022, 23:34 | ||||||||||||||||||||||
Сообщение было отмечено Kurbanov как решение
Решение
Kurbanov, по всей видимости - это детали работы Mock-а, в определении того, был вызван метод или нет, используется отслеживание ссылок на параметры.
Если создавать на лету новый объект Brand-а, то ничего не работает:
Видимо, недоработка/несовершенство Mock-а. Для такого кода:
Добавлено через 3 минуты И builder у вас криво написан. ![]() Но это все тесты ради тестов, все это мало связано с реальными enterprise-проектами. Добавлено через 18 минут То есть мы проверяем, был ли вызван метод с конкретным набором параметров. Поскольку на лету создается новый параметр:
1
|
||||||||||||||||||||||
| 09.07.2022, 23:34 | |
|
Помогаю со студенческими работами здесь
8
Mock контекста при юнит тестировании Mock тестирование Юнит тестирование С++ (Google Mock) No Last call on a Mock available
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|